在 PHP 7+ 中,对 try-finally 的改进主要包括以下几点:
- 引入了 Throwable 接口替代了原先的 Exception 接口,Throwable 接口是 Exception 和 Error 的基类,这使得 try-catch 块能够处理任何异常和错误,而不仅仅是异常。
- 引入了 finally 块可以用来在 try-catch 块执行完毕后无论是否抛出异常都会执行的代码,这样可以确保资源的正确释放和清理,避免资源泄漏。
- 引入了多个异常捕获,可以在一个 catch 块中捕获多个异常类型,简化了代码的编写。
- 可以在 finally 块中使用 return 语句,不会阻止 try 或 catch 块中的 return 语句执行,这样可以确保在 finally 块中的代码执行完毕后再返回结果。
- 引入了 Throwable::getTrace() 方法和 Throwable::getTraceAsString() 方法,可以获取异常的堆栈跟踪信息,方便调试和定位问题。