【nginx】php异常无法捕捉?

在文件a.php中引入文件b.php,并在a.php中执行b.php中的一个函数c。此时c抛出异常,而在a中无法捕获。环境:nginx,php-fpm。
nginx直接502

不好意思。一下贴出代码和错误:
a.php中代码

【nginx】php异常无法捕捉?

nginx 错误日志

【nginx】php异常无法捕捉?

此时在b中的pdo抛出了异常,这里是捕捉不到的,但是如果我在b.php文件的代码中直接catch(一下是b.php的代码):

【nginx】php异常无法捕捉?
另外,php-fpm没有任何错误日志。

回答

能贴代码就不要贴图啊!!!!!!!

要做啥说明你可以用注释啊!!!!!

从你的问题我给你几个建议:

  1. 看nginx的错误日志,nginx一般能给你一个很好的反馈。
  2. 再看php-fpm的错误日志记录,基本上能定位PHP的错误。
  3. 通常来说你这种是程序出错了,我建议你用catch(Error $e)同时捕获错误,如果是报错的话,不用Error是捕获不到的,Exception只能捕获异常。

以上三点,切记切记。


更新一下回答:

从你代码可见,你在用

try {

} catch(Exception $e) {

}

这里的Exception类不知道是你自己定义的还是框架里的,不管这两种情况是输入哪一种,假设你b.php中pdo所抛出的异常不是继承你a所定义的这个异常类,你在a中肯定无法捕获到。
所以你可以用\Exception试一下,为PHP中所有异常类的基类。
另外,我把

catch(Error $e)

加大一点,你用这个:

catch(Error $e)

试一下看看到底程序有没有错啊。
另外:

能贴代码就不要贴图啊!!!!!!!

说的是啥啊,图片都没有

Exception异常和Error错误都需要捕获

try {

echo asdfasdf('1'); //未定义的函数

throw new Exception('asdasd');

} catch (Exception $e) {

echo $e->getMessage();

} catch (Error $e) {

echo $e->getMessage();

}

光捕获异常肯定不行的

php 7以上版本可以用Throwable

try {

echo 'php7';

} catch(Throwable $e){

throw new Exception('异常');

}

官方文档

以上是 【nginx】php异常无法捕捉? 的全部内容, 来源链接: utcz.com/a/83048.html

回到顶部