我有MySQL脚本,它以查询开始,从数据库中提取数据,然后处理这些数据,在最后一步,我想将处理后的数据写回数据库。问题是,每次我向数据库发送查询时,我都希望有一个try-catch函数来处理相同类型的异常处理错误,例如
try
{
server connections, queries, etc .
} catch (Exception $e) {
echo '<p class="error">Server error! please try again later!</p>';
echo '<a href="index.php">Return to Home Page</a>';
// echo '<br/><p>Developer message: '.$e.'</p>';
exit();
}
...
functions, etc .
...
try
{
server connections, queries, etc .
} catch (Exception $e) {
echo '<p class="error">Server error! please try again later!</p>';
echo '<a href="index.php">Return to Home Page</a>';
// echo '<br/><p>Developer message: '.$e.'</p>';
exit();
}
问题是我想避免代码的冗余并编写一个全局'catch'来处理所有'try'实例。有没有办法做到这一点?
答案 0 :(得分:4)
以下通常是以过程样式删除重复代码的典型方法。
function handleException($e) {
echo '<p class="error">Server error! please try again later!</p>';
echo '<a href="index.php">Return to Home Page</a>';
exit();
}
try {
server connections, queries, etc.
}
catch (Exception $e) {
handleException($e);
}
...
functions, etc.
...
try {
server connections, queries, etc.
}
catch (Exception $e) {
handleException($e);
}
现在实际上,你并不需要处理PHP中的所有异常,除非你可以从它们中恢复,或者你需要对它们做一些特别的事情。如果您只想显示错误,请在应用程序的启动时设置全局catch-all处理程序,并将其作为默认值使用,除非另有说明。
新代码:
set_exception_handler(function ($e) {
echo '<p class="error">Server error! please try again later!</p>';
echo '<a href="index.php">Return to Home Page</a>';
exit();
});
server connections, queries, etc.
...
functions, etc.
...
server connections, queries, etc.