php - 尝试并发现语法错误
问题描述
如果我有以下代码:
try {
//call function a
$object->function_a();
//call function b
$object->function_b();
//call function c
$object->function_c();
}
catch(Exception $e) {
$error->track_error();
}
我如何捕获语法错误,例如有人将 function_b() 名称更改为不存在的 function_d()。
似乎 try 和 catch 不会捕获语法错误,如果没有 if 语句来检查是否有问题,它就无法工作。
但是如果我可以预期 if 语句会出错,为什么我需要 try 和 catch,我可以写这样的东西:
if(//something is false) {
$error->track_error();
}
我正在寻找的东西会创建一个异常并跳转到整个 try 范围内的 catch 块,当发生任何 php 错误(包括语法)时,捕获它,然后使用 error_get_last() 或类似函数获取详细信息数据库内的错误日志记录。
这可能吗?
解决方案
您可以使用set_error_handler()
抛出自定义Exception
:
set_error_handler(function(int $errno, string $errstr, string $errfile = '', int $errline = 0) {
throw new Exception("$errstr ($errfile, line $errline)");
});
推荐阅读
- ios - UIKit 实时预览,如 swiftUI
- python - 如何创建一个为问答游戏重置的计时器?
- itext - Itext 7 SplitByOutlines - 最终文档保持打开状态且无法关闭
- python - 如何打印具有不同函数名称的函数
- c++ - 使用 CMake 和 CLion 链接库失败,退出状态为 1
- java - REST 返回 Vaadin 的 HTML 而不是 String
- css - 大屏幕上的网格显示间隙
- python - Tensorflow/Keras:tf.reshape 在多个 Conv2D 后连接
- c - 如何在 gdb 中链接特定的标准库?
- python - pip install pydobc 错误 - 确认 ssl 证书时出现问题