php - PHP 中的全局捕获

标签 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();
}

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

最佳答案

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

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.

关于php - PHP 中的全局捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39386012/

相关文章:

php - 无法修改 header 信息 - header 已发送

javascript - 使用jquery选择一个 anchor 来显示文本区域

php - 网络连接在 php 录像机中连接失败

mysql - 在数据库中查找热门搜索

php - Laravel 查询生成器 - 高级条件子句(可选参数)

php - 如何使用两个表laravel从同一数据库中获取数据

php - MySQL + PHP 数百万行,对多个查询的数据进行排序。内存消耗

php - MySQL 使用不同的 WHERE 子句进行多次计数并查看结果

PHP,检查电子邮件是否已在数据库中

mysql连接表