PHP的全球流行

Kar*_*eda 0 php mysql

我有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();
}
Run Code Online (Sandbox Code Playgroud)

我想避免代码的冗余,而是编写一个全局“ catch”来处理所有“ try”实例。有什么办法吗?

apo*_*fos 6

以下是通常以过程样式删除重复代码的典型方法。

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);
}
Run Code Online (Sandbox Code Playgroud)

现在,实际上,除非可以从PHP中进行恢复,或者您需要对它们进行特殊处理,否则您实际上并不需要处理PHP中的所有异常。如果您只想显示错误,请在应用程序启动时设置一个全局捕获处理程序,除非另有说明,否则将其用作默认值。

新代码:

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.
Run Code Online (Sandbox Code Playgroud)

  • 仅仅为_N + 1而已,实际上,除非可以从PHP中恢复,否则您实际上并不需要处理PHP中的所有异常_ (2认同)