class MyException extends RuntimeException {
MyException(String msg) {
super(msg);
}
}public class Test {
public void m() {
try {
throw new MyException("测试");
} catch(MyException e) {
throw e;
// 在这里 throw RuntimeExcetion(e); 与 throw e; 有什么区别? 为什么?哪种方法好点?
}
}
public static void main(String[] args) {
Test t = new Test();
t.m();
}
}
看我注释的提的问题,谢谢大家的解答!
一般情况下,我们会在异常处理中处理当前的异常,但如果我们无法处理或者是无法预料会发生什么错误,我们可以选择将这个错误抛出,并且在抛出的时候,尽量提供更多的信息,这样,以后捕获这个异常的程序员就可以处理这个异常。
请问我抛Exception行不行?
非要抛RuntimeException吗?
throw e一样可以在抛啊?
如果我们提供了一个checked异常,try-catch块中捕获异常,然后抛checked异常,那么别人在调用的时候就必须try-catch此异常,强制性的。当然在try-catch中处理异常,然后转化成统一的异常(throw自定义的异常)可以让整体代码有更加的一致性。
}catch(Exception e){
throw new AAABBBException();
}}
void test2 { try{
test1()
}catch(AAABBBException e){
System.out.println("test1 出错了");
}
}