php - 记录捕获和未捕获的异常?

标签 php exception logging

我最近一直在处理异常。我认为记录未捕获的异常是有意义的,因为它极大地帮助开发人员通过简单地查看异常日志来处理源代码中可能存在的问题。但是,当异常被处理时,还需要再记录吗?是的,在某种程度上。如果你有“坏”的开发人员编写有错误的代码,那么通过简单地捕获异常将使错误“消失”。例如:

try
{
 fopen('/path/to/file','w');
}
catch (Exception $e)
{
 // Display an error to user
}

以上代码是PHP。关键是,这种代码,imo,不应该存在。异常本应是异常的并且很少发生,但是对于这段代码,它们发生的频率非常低。例如,开发人员不检查文件是否存在,也不检查他是否有写入权限。相反,它应该是:

try
{
 if (file_exists('/path/to/file') && is_writable('/path/to/file'))
  fopen('/path/to/file','w');
 else
  // Display an error to user about file not existing or not being writable
}
catch (Exception $e)
{
 // Display an error to user about an unexpected error
}

现在这很有意义。只有在异常情况下(例如服务器崩溃、断电等)才会抛出并捕获异常。但是,如果开发人员对所有内容都使用 Exceptions 而忽略检查怎么办 - 我有没有办法记录捕获的异常?

我不希望开发人员将所有内容都放在 try-catch block 中来“解决”问题。我希望他们明确检查他们应该检查的任何内容 - 并为硬件故障、服务器崩溃等异常情况留下异常(exception)。

最佳答案

Exceptions are meant to be exceptional and occur rarely, but with this code they occur more than rarely.

我认为这是一种误解。异常点是将理想流程与错误处理流程分开。

关于php - 记录捕获和未捕获的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1082276/

相关文章:

c++ - 声明 POD 类型会抛出异常吗?

c++ - 为什么我的 UnhandledExceptionFilter 没有被简单地除以零调用?

django - 我的 Django/uWSGI vassal 的堆栈跟踪记录在哪里?

php - iframe 的远程主机

php - 将PHP文件转换为txt文件

Php脚本和mysql查询错误,无法初始化变量

android - 致命异常 : main/camera

php - 将 PHP 系统日志发送到特定的 Linux 日志文件

java - 如何超越LogManager警告?

php - 如果不存在并从数据库获取正确的值