"throw new Exception" 和 "new Exception" 的区别?
Difference between "throw new Exception" and "new Exception"?
我有兴趣了解使用 throw new Exception()
和 new Exception()
的最佳实践。在使用 new Exception()
的情况下,我看到代码移动到下一条语句而不是抛出异常。
但是我被告知我们应该使用 new Exception()
来抛出 RuntimeException
。
任何人都可以解释一下吗?
Exception e = new Exception ();
只需创建一个新的异常,稍后您可以抛出该异常。使用
throw e;
鉴于
throw new Exception()
在一行中创建并抛出异常
创建并抛出运行时异常
throw new RuntimeException()
new Exception()
表示您正在创建异常类型的新实例。这意味着您只是在实例化一个类似于 new String("abc")
等其他对象的对象。当您即将在接下来的几行代码执行中抛出类型 Exception
的异常时,您会这样做。
而当你说 throw new Exception()
时,这意味着你是说将程序控制权移交给调用者,并且不要执行此 throw 语句之后的进一步语句。
你会在发现无法继续前进并进一步执行的情况下这样做,因此让来电者知道我无法处理这种情况,如果你知道如何处理这种情况,请这样做。
没有最佳实践,例如您将橙子与苹果进行比较。但是请记住,当抛出异常时,您总是会抛出一个有意义的异常,就像 IO 一样,如果文件不存在,它会抛出 FileNotFoundException
而不是其父 IOException
.
new Exception()
表示创建实例(与创建 new Integer(...) 相同)
但在你抛出它之前不会发生异常...
考虑以下代码段:
public static void main(String[] args) throws Exception {
foo(1);
foo2(1);
}
private static void foo2(final int number) throws Exception {
Exception ex;
if (number < 0) {
ex = new Exception("No negative number please!");
// throw ex; //nothing happens until you throw it
}
}
private static void foo(final int number) throws Exception {
if (number < 0) {
throw new Exception("No negative number please!");
}
}
如果参数为负但方法 foo() 将抛出异常
如果参数为负
,方法 foo2() 将创建一个异常实例
我有兴趣了解使用 throw new Exception()
和 new Exception()
的最佳实践。在使用 new Exception()
的情况下,我看到代码移动到下一条语句而不是抛出异常。
但是我被告知我们应该使用 new Exception()
来抛出 RuntimeException
。
任何人都可以解释一下吗?
Exception e = new Exception ();
只需创建一个新的异常,稍后您可以抛出该异常。使用
throw e;
鉴于
throw new Exception()
在一行中创建并抛出异常
创建并抛出运行时异常
throw new RuntimeException()
new Exception()
表示您正在创建异常类型的新实例。这意味着您只是在实例化一个类似于 new String("abc")
等其他对象的对象。当您即将在接下来的几行代码执行中抛出类型 Exception
的异常时,您会这样做。
而当你说 throw new Exception()
时,这意味着你是说将程序控制权移交给调用者,并且不要执行此 throw 语句之后的进一步语句。
你会在发现无法继续前进并进一步执行的情况下这样做,因此让来电者知道我无法处理这种情况,如果你知道如何处理这种情况,请这样做。
没有最佳实践,例如您将橙子与苹果进行比较。但是请记住,当抛出异常时,您总是会抛出一个有意义的异常,就像 IO 一样,如果文件不存在,它会抛出 FileNotFoundException
而不是其父 IOException
.
new Exception()
表示创建实例(与创建 new Integer(...) 相同)
但在你抛出它之前不会发生异常...
考虑以下代码段:
public static void main(String[] args) throws Exception {
foo(1);
foo2(1);
}
private static void foo2(final int number) throws Exception {
Exception ex;
if (number < 0) {
ex = new Exception("No negative number please!");
// throw ex; //nothing happens until you throw it
}
}
private static void foo(final int number) throws Exception {
if (number < 0) {
throw new Exception("No negative number please!");
}
}
如果参数为负但方法 foo() 将抛出异常 如果参数为负
,方法 foo2() 将创建一个异常实例