tan*_*was 1 java exception-handling
class Test{
public static void main(String[] cv) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
}
}
Run Code Online (Sandbox Code Playgroud)
当我们写抛出时,谁在这里实际处理IOException?当我们使用try-catch时,我们可以在catch块中处理它.但在这里如何以及谁在处理?
如果你有一个带有throws子句的方法,那么调用该方法的任何其他方法都必须处理异常(通过捕获它)或者通过throws为该类型的异常设置一个子句来进一步抛出它(这样,反过来,再次调用那个的方法也必须这样做,等等.
当main方法有throws子句时,JVM将负责捕获异常,默认情况下它只会打印异常的堆栈跟踪.
如果要在main抛出异常时进行特殊处理,则可以设置未捕获的异常处理程序:
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.err.printf("Thread %s threw an uncaught exception!%n", t.getName());
e.printStackTrace();
}
});
Run Code Online (Sandbox Code Playgroud)