try-catch-finally的运行流程如下:12
-
执行try块中的代码:首先,程序会执行try块中的代码。try块中可能包含一个或多个可能会抛出异常的语句。
-
异常处理:
- 如果try块中的代码没有抛出异常,则catch块会被跳过,程序会继续执行try块之后的代码。
- 如果try块中的代码抛出了异常,程序会立即停止执行try块中的剩余代码,并跳转到与抛出异常匹配的catch块。catch块会处理try块中抛出的异常,可以选择捕获并处理异常,或者将异常继续向上层抛出。
-
执行finally块:无论是否有异常被抛出或捕获,程序都会执行finally块中的代码。finally块通常用于释放资源或执行一些必要的清理工作。在catch块执行完毕后,无论是否有异常被捕获,程序都会继续执行finally块中的代码。
-
继续执行:在finally块执行完毕后,程序会继续执行try catch finally之后的代码。
注意事项:
- 返回值处理:如果try或catch块中含有return语句,程序会在执行到finally块之前返回。finally块中的返回值不会影响try或catch块中的返回值,除非finally块中也包含return语句,这时程序会提前退出并返回finally块中的值。
- 资源清理:finally块主要用于资源清理,确保无论程序是否正常结束还是异常结束,都能释放资源或执行必要的清理工作