【nginx】php异常无法捕捉?
在文件a.php中引入文件b.php,并在a.php中执行b.php中的一个函数c。此时c抛出异常,而在a中无法捕获。环境:nginx,php-fpm。
nginx直接502
不好意思。一下贴出代码和错误:
a.php中代码
nginx 错误日志
此时在b中的pdo抛出了异常,这里是捕捉不到的,但是如果我在b.php文件的代码中直接catch(一下是b.php的代码):
另外,php-fpm没有任何错误日志。
回答
能贴代码就不要贴图啊!!!!!!!
要做啥说明你可以用注释啊!!!!!
从你的问题我给你几个建议:
- 看nginx的错误日志,nginx一般能给你一个很好的反馈。
- 再看php-fpm的错误日志记录,基本上能定位PHP的错误。
- 通常来说你这种是程序出错了,我建议你用
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