我有兴趣了解使用throw new Exception()
和new Exception()
的最佳做法。在使用new Exception()
的情况下,我已经看到代码移动到下一个语句而不是抛出异常。
但我被告知我们应该使用new Exception()
投掷RuntimeException
。
有人可以对此有所了解吗?
答案 0 :(得分:4)
new Exception()
表示创建一个实例(与创建新的整数(...)相同)
但是在你抛出它之前不会有例外......
请考虑以下代码段:
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()将创建异常实例答案 1 :(得分:1)
Exception e = new Exception ();
只需创建一个新的Exception,稍后可以抛出。使用
throw e;
尽管
throw new Exception()
在一行中创建并抛出异常
创建并抛出运行时异常
throw new RuntimeException()
答案 2 :(得分:0)
new Exception()
表示您正在创建一个新的Exception类型实例。这意味着您只是实例化一个类似new String("abc")
之类的对象。当您要在接下来的几行代码执行中抛出类型Exception
的异常时,您会这样做。
当你说throw new Exception()
时,这意味着你说的是将程序控制移动到调用者并且不在此throw语句之后执行进一步的语句。
你会在你发现无法前进并进一步执行的情况下这样做,因此让来电者知道我无法处理这种情况,如果你知道如何处理这种情况,请这样做
没有最好的做法,比如你将橘子与苹果进行比较。但是请记住,在抛出异常时,你总是抛出一个有意义的异常,比如IO,如果文件不存在,它会抛出FileNotFoundException
而不是它的父IOException
。