最近我一直在处理异常。我认为记录未捕获的异常是有意义的,因为它可以帮助开发人员通过查看异常日志来解决源代码中可能存在的问题。但是,当一个异常被处理后,还需要继续记录吗?在某种程度上是需要的。如果你有“糟糕”的开发人员编写有缺陷的代码,那么仅仅捕获异常将使这些缺陷消失。例如:
try
{
fopen('/path/to/file','w');
}
catch (Exception $e)
{
// Display an error to user
}
上述代码是PHP。我的看法是,这种代码不应该存在。异常情况应该是罕见的,但是在这个代码中它们出现得更加频繁。例如,开发人员没有检查文件是否存在,也没有检查是否有写入权限。相反,代码应该是这样的:
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
}
这现在基本上很有道理。只有在出现异常情况(例如服务器崩溃、停电等)时才会抛出和捕获异常。但是,如果开发人员将所有内容都使用异常并省略检查,那么我是否有办法记录捕获的异常?
我不希望开发人员将所有内容放入try-catch块中以“解决”问题。我希望他们明确检查应该检查的任何内容,并将异常留给像硬件故障、服务器崩溃等异常情况。