【发布时间】:2019-12-07 04:54:27
【问题描述】:
我了解“finally”关键字在各种语言中的用途,但是,我很难理解为什么您会在没有格式偏好的情况下使用它。
例如,在 PHP 中:
try {
possibleErrorThrownFunction();
}
catch (CustomException $customException) {
// handle custom error
}
catch (Exception $exception) {
// handle the error
}
finally {
// run this code every single time regardless of error or not
}
这段代码在做什么和这个有什么区别?
try {
possibleErrorThrownFunction();
}
catch (CustomException $customException) {
// handle custom error
}
catch (Exception $exception) {
// handle the error
}
// run this code every single time regardless of error or not
由于错误被捕获,最后一行不是总是会运行吗?在这种情况下,除非您只想保持代码样式的格式,否则就没有真正使用finally 的情况?
如果我在这里遗漏了什么,finally 语句是必要的并且与仅在 try/catch 语句之后放置代码不同的示例将很有帮助。
【问题讨论】:
-
无论是否抛出异常,最终都会总是被执行。这通常用于清理任务,例如解锁文件或编译器 (PHP) 不执行的操作。
-
正如@MarkusZeller 所说,它通常用于清理。查看 Java 文档以获取详细信息:docs.oracle.com/javase/tutorial/essential/exceptions/…
-
@MarkusZeller php 被解释,而不是编译。
-
如果你抛出一个未被任何 catch 子句处理的异常,或者如果你从任何处理程序中抛出一个异常,那么 catch 子句后面的代码将永远不会被执行,而finally 块将在异常进一步向下传播到调用堆栈之前执行
-
@bassxzero 是的,(PHP)代码被解释了,但最终它被编译成字节码。这不会改变 finally 的行为。
标签: php error-handling try-catch