Exception Catching and Handling
上一节
下一节
Exception Handling
When an exception is thrown, it can be caught and handled in a try-catch block, as follows:

try语句表示尝试捕获语句块中代码抛出的异常,catch语句表示对捕获到的对应类型的异常进行处理。当异常发生后会对异常类型进行匹配,找到合适的catch语句块处理异常。父异常类可以匹配所有子类异常,例如ExceptionA、ExceptionB、ExceptionC都是Exception的子类,因此可以统一捕获Exception异常:

多catch语句场景下,若父异常类和子异常类同时存在,则设计时先尝试捕获子异常类,再捕获父异常类:

反过来先捕获父异常类则会出现编译错误。
When Exception happen
当try语句中的异常发生后,其剩余的语句不会执行,此时直接跳转到匹配上的catch语句中对异常进行处理:

After Exception Handling
当异常捕获并处理完成之后,继续执行try-catch语句块后面的代码:

Without Catching
当异常发生但是没捕获到,则程序执行权交给上一层调用者,在如下所示代码中,假设method()抛出ExceptionB,但main函数只处理了ExceptionA异常,这个时候程序控制权返回给调用main函数的上一层代码,因此,这时main函数剩余的代码不会执行。


