我有一个简单的try / catch。 如果引发错误,我希望函数运行,但页面应继续运行。
我注意到,该功能未运行。如果我在函数之后放一个die(),则函数将运行,但页面将停止。
我做错什么了吗?
try {
$stmt->execute();
}
catch(Exception $e) {
sendError($e );
die( 'Error'); //neccesary or function doesn't run
}
答案 0 :(得分:0)
die( 'Error');
对于运行该功能不是必需的。如果您向我们展示sendError()
函数及其作用,将会有所帮助。您必须了解,仅在引发并捕获异常时才调用该函数。因此,看来您做错了什么。
答案 1 :(得分:0)
这将取决于其余的代码以及try / catch块周围的环境,以及PHP的版本。
例如此代码:
<?php
namespace tests;
try {
throw new Exception();
} catch (Exception $e) {
echo "caught exception";
}
echo "end";
将不会打印“已捕获”或“结束”消息。在PHP 7.2上,捕获并显示了所有错误和警告,这是一个致命错误:
PHP Fatal error: Uncaught Error: Class 'tests\Exception' not found in test.php:5
在PHP 5.6中,Fatal error: Class 'tests\Exception' not found
。
在这种情况下,这是因为我没有为Exception
命名,所以它正在尝试,并且无法使用本地版本。
如果代码在ini_set('display_errors', false);
之前也有try
,则脚本将不显示任何内容-完全。
因此-确保Exception
的命名空间正确,顶部为use Exception;
,或在适当的位置,} catch (\Exception $e) {
。