php - php 中的 throw 和 catch 处理

标签 php error-handling try-catch

有没有办法在 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/

相关文章:

php - 在 Laravel 中返​​回深度嵌套关系中的选定列

php - sql查询不拉取记录

python - 如何在 except 子句中捕获 python 异常

error-handling - 在Swift 2.1中,如何获取抛出的NSError?

error-handling - Go 中更简洁的错误处理

php - 尝试不使用 Stripe 充电

javascript - 这是在 JS 中的依赖函数中使用 Try-Catch 和 async-wait 的正确方法吗

php - SQL查询按给定日期范围对记录进行分组

PHP 对象保存

reactjs - 如果状态码为400,如何获取获取响应数据