PHP尝试捕获未运行

时间:2018-07-05 20:20:24

标签: php

我有一个简单的try / catch。 如果引发错误,我希望函数运行,但页面应继续运行。

我注意到,该功能未运行。如果我在函数之后放一个die(),则函数将运行,但页面将停止。

我做错什么了吗?

try {
    $stmt->execute();
 }

catch(Exception $e) {
    sendError($e );
    die( 'Error');  //neccesary or function doesn't run     
}

2 个答案:

答案 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) {