最近我一直在使用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块中以“解决”问题。我希望他们明确地检查任何他们应该检查 - 离开例外像硬件故障,服务器崩溃等异常情况
set_exception_handler(http://www.php.net/manual/en/function.set-exception-handler.php) – troelskn 2009-07-04 15:28:31