我最近一直在与Exceptions合作.我认为记录未被捕获的异常是有意义的,因为它极大地帮助开发人员通过简单地查看异常日志来处理源中可能存在的问题.但是,当处理异常时,是否需要再记录它?是的,在某种程度上.如果你有“坏”的开发人员编写有错误的代码,那么只需捕获异常将使错误“消失”.例如:
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块中以“解决”问题.我希望他们明确检查他们应该检查的内容 – 并为硬件故障,服务器崩溃等异常情况留下例外.