有没有办法在 PHP 中抛出异常而无需 try 和 catch?
我的意思是这样的:
if(!isset($_POST['APIKEY']) || $_POST['APIKEY'] != API_KEY)
throw new Exception(lang("apikey_error"));
最佳答案
异常(exception)的全部意义在于 不是 反射性地catch
他们。
异常是一种错误处理机制,允许您传播错误。这明确意味着,如果您的应用程序遇到无法继续工作的异常状态,您可以通过抛出异常并完全放弃当前执行上下文来发出信号。如果这发生在应用程序“顶部”的某个地方,应用程序将被终止,因为它无法继续运行。正如它应该。
捕获异常适用于您的代码正在调用子系统并且该代码预计该子系统中可能出现错误 并且知道如何处理它们。 子系统可能会失败,但调用者可以处理该失败。如果子系统会捕获自己的异常……那有什么意义呢?
try {
throw new Exception;
} catch (Exception $e) {
// what now?
}
以上与以下有何不同?
// what now?
所以,是的,你可以并且几乎总是应该抛出异常,而不是立即捕获它们。把追赶的事情留给来电者。
function foo() {
// Something's wrong, can't do my job, I'm outta here!
throw new Exception;
}
try {
foo();
} catch (Exception $e) {
// oh, something's wrong with foo(), let's try bar() instead
bar();
}
关于php - php 中的 throw 和 catch 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24654263/