GVKun编程网logo

PHP – 错误处理(php 错误和异常处理)

9

关于PHP–错误处理和php错误和异常处理的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于MySql错误处理-错误处理的例子、PHP7错误处理技巧:如何使用set_error_handle

关于PHP – 错误处理php 错误和异常处理的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于MySql错误处理-错误处理的例子、PHP 7错误处理技巧:如何使用set_error_handler函数自定义错误处理函数、PHP PDO 错误与错误处理、PHP 函数中的错误处理是如何工作的?如何自定义错误处理?等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

PHP – 错误处理(php 错误和异常处理)

PHP – 错误处理(php 错误和异常处理)

foreach ($scripts as $script) {    
    $grader = Grader::getInstance();

    $grader->setApplicantId($script['applicant_id'])
        ->setHandler($x)
        ->doGrading();

}

平地机类(Singleton类)

public function setHandler($x)
 {
     $this->validateHandler($x);
 }

 public function validateHandler($x)
 {
     $this->handleError("Invalid Handler");

     return $this;
 }

 public function handleError($message)
 {

 }

如何编写handleError函数,使其停止当前执行意味着返回$this,在validateHandler函数中永远不会到达,将错误消息输出到屏幕,for循环却不会停止运行?

解决方法

foreach ($scripts as $script) {    
    try {
        $grader = Grader::getInstance();

        $grader->setApplicantId($script['applicant_id'])
            ->setHandler($x)
            ->doGrading();
    }
    catch ($e) {
        echo 'Grading Failed for applicant '.$script['applicant_id'];
    }
}

...

public function handleError($message)
{
    throw new Exception('Unable to fruzz the bubar');
}

MySql错误处理-错误处理的例子

MySql错误处理-错误处理的例子

有几种错误处理的声明形式: 
§ 如果任何错误(不是 NOT FOUND ) , 设置 l_error 为 1 后继续执行: 
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION 
SET l_error=1; 
§ 如果发生任何错误(不是 NOT FOUND), 执行 ROLLBACK和产生一条错误消息后退出当前块或存储过程。 
DECLARE EXIT HANDLER FOR SQLEXCEPTION 
BEGIN 
ROLLBACK; 
SELECT ''Error occurred – terminating''; 
END; 
§ 如果 MySQL 1062错误 (重复的健值 )发生,执行 SELECT语句(向调用程序发一条消息)后继续执行 
DECLARE CONTINUE HANDER FOR 1062 
SELECT ''Duplicate key in index''; 
§ 如果 SQLSTATE 2300错误 (重复的健值 )发生,执行 SELECT语句(向调用程序发一条消息)后继续执行 
DECLARE CONTINUE HANDER FOR SQLSTATE ''23000'' 
SELECT ''Duplicate key in index''; 
§ 当游标或者 SQL 选择语句没有返回值时,设置 l_done=1 后继续执行 
DECLARE CONTINUE HANDLER FOR NOT 
FOUND 
SET l_done=1; 
§ 此例除了用 SQLSTATE 变量而不是命名条件以外,跟前一个例子一样 
DECLARE CONTINUE HANDLER FOR SQLSTATE ''02000 '' 
SET l_done=1; 
§ 此例除了用 MySQL 的错误码变量而不是命名条件或者 SQLSTATE 变量以外,跟前两个例子一样
DECLARE CONTINUE HANDLER FOR 1329 

SET l_done=1;

 

 

DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1; -- 如果未找到数据 将标记改为不可用

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;  -- 异常跳出

 

start TRANSACTION;

COMMIT;

PHP 7错误处理技巧:如何使用set_error_handler函数自定义错误处理函数

PHP 7错误处理技巧:如何使用set_error_handler函数自定义错误处理函数

php 7错误处理技巧:如何使用set_error_handler函数自定义错误处理函数

在PHP编程中,错误处理是一个非常重要的方面。当我们的代码出现错误时,如何准确地捕获并处理这些错误,可以显著提高我们的应用程序的稳定性和可靠性。PHP提供了set_error_handler函数来自定义错误处理函数,使我们能够根据自己的需求处理错误。本文将介绍如何使用set_error_handler函数来自定义错误处理函数,并提供一些实用的技巧。

一、什么是set_error_handler函数
set_error_handler是PHP的一个内置函数,它允许我们自定义处理PHP运行时发生的错误的方式。我们可以使用该函数注册一个自定义错误处理函数。当PHP执行期间发生一个错误时,系统将自动调用我们注册的处理函数。这样,我们就可以自定义错误的输出方式,改善用户体验,并且更好地定位和修复问题。

二、set_error_handler函数的使用方法
set_error_handler函数的声明如下:
bool set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )

set_error_handler函数接受两个参数:
$error_handler:自定义错误处理函数的名称。
$error_types:可选参数,设置要处理的错误类型。默认情况下,set_error_handler将处理所有错误类型。

立即学习“PHP免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

下面是一个简单的示例,展示如何使用set_error_handler函数来自定义错误处理函数:

// 自定义错误处理函数
function custom_error_handler($errno, $errstr, $errfile, $errline) {

echo "错误代码:".$errno."<br>";
echo "错误消息:".$errstr."<br>";
echo "错误文件:".$errfile."<br>";
echo "错误行数:".$errline."<br>";
登录后复制

}

// 设置自定义错误处理函数
set_error_handler("custom_error_handler");

// 触发一个错误
echo $undefined_variable;
?>

上面的代码定义了custom_error_handler函数作为自定义错误处理函数,并使用set_error_handler将其注册。当代码尝试访问一个未定义的变量$undefined_variable时,会发生一个错误。此时,set_error_handler会自动调用custom_error_handler函数来处理这个错误。在custom_error_handler函数中,我们可以根据需要打印错误消息,跟踪错误的发生地点,甚至记录错误到日志文件中。

在自定义错误处理函数内部,我们可以使用一些PHP内置的函数来获取更多有关错误的信息,如error_get_last和debug_backtrace等。

三、错误处理技巧

  1. 错误级别控制
    在set_error_handler函数的第二个参数$error_types中,我们可以设置要处理的错误类型。PHP提供了一系列错误类型,如E_ERROR、E_WARNING、E_PARSE等。我们可以根据实际需要选择要处理的错误类型,以便更好地控制错误的处理。
  2. 错误日志记录
    除了直接在页面上显示错误信息之外,我们还可以将错误信息记录到日志文件中,以便更好地跟踪和定位问题。使用error_log函数,我们可以将错误信息写入到指定的日志文件中。例如,我们可以在自定义错误处理函数中添加下面的代码来记录错误到日志文件:

error_log("错误代码:".$errno." 错误消息:".$errstr." 错误文件:".$errfile." 错误行数:".$errline, 3, "/var/log/php_errors.log");

上述代码将错误信息写入到了/var/log/php_errors.log文件中。

  1. 更友好的错误提示
    除了记录错误信息到日志文件,我们还可以根据不同的错误类型,为用户提供更友好的错误提示。例如,我们可以根据不同的错误类型返回不同的信息,或者将错误信息包装成更易理解的格式。

四、结论
通过使用set_error_handler函数,我们可以自定义PHP程序的错误处理方式,实现更好的错误控制和错误信息处理。在实际开发中,我们可以根据项目的具体需求,灵活运用set_error_handler函数,并结合其他错误处理方法,编写出高效且可靠的PHP应用程序。

然而,值得注意的是,过于详细的错误信息和错误提示可能会暴露敏感数据和系统细节。因此,在生产环境中,我们应谨慎处理错误信息,并确保不泄露敏感信息,以保证系统安全。

希望本文能够帮助大家更好地理解和应用set_error_handler函数,从而提高PHP应用程序的错误处理能力。

以上就是PHP 7错误处理技巧:如何使用set_error_handler函数自定义错误处理函数的详细内容,更多请关注php中文网其它相关文章!

PHP PDO 错误与错误处理

PHP PDO 错误与错误处理

  • PDO::ERRMODE_SILENT

    此为默认模式。 PDO 将只简单地设置错误码,可使用 PDO::errorCode() 和 PDO::errorInfo() 方法来检查语句和数据库对象。如果错误是由于对语句对象的调用而产生的,那么可以调用那个对象的 PDOStatement::errorCode() 或 PDOStatement::errorInfo() 方法。如果错误是由于调用数据库对象而产生的,那么可以在数据库对象上调用上述两个方法。

  • PDO::ERRMODE_WARNING

    除设置错误码之外,PDO 还将发出一条传统的 E_WARNING 信息。如果只是想看看发生了什么问题且不中断应用程序的流程,那么此设置在调试/测试期间非常有用。

  • PDO::ERRMODE_EXCEPTION

    除设置错误码之外,PDO 还将抛出一个 PDOException 异常类并设置它的属性来反射错误码和错误信息。此设置在调试期间也非常有用,因为它会有效地放大脚本中产生错误的点,从而可以非常快速地指出代码中有问题的潜在区域(记住:如果异常导致脚本终止,则事务被自动回滚)。

    异常模式另一个非常有用的是,相比传统 PHP 风格的警告,可以更清晰地构建自己的错误处理,而且比起静默模式和显式地检查每种数据库调用的返回值,异常模式需要的代码/嵌套更少。

创建 PDO 实例并设置错误模式

<?php
$dsn = ''mysql:dbname=testdb;host=127.0.0.1'';
$user = ''dbuser'';
$password = ''dbpass'';

try {
    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo ''Connection failed: '' . $e->getMessage();
}

?>

  

注意: 不管当前是否设置了 PDO::ATTR_ERRMODE ,如果连接失败,PDO::__construct() 将总是抛出一个 PDOException 异常。未捕获异常是致命的。

创建 PDO 实例并在构造函数中设置错误模式

<?php
$dsn = ''mysql:dbname=test;host=127.0.0.1'';
$user = ''googleguy'';
$password = ''googleguy'';

/*
    使用 try/catch 围绕构造函数仍然有效,即使设置了 ERRMODE 为 WARNING,
    因为如果连接失败,PDO::__construct 将总是抛出一个  PDOException 异常。
*/
try {
    $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
    echo ''Connection failed: '' . $e->getMessage();
    exit;
}

// 这里将导致 PDO 抛出一个 E_WARNING 级别的错误,而不是 一个异常 (当数据表不存在时)
$dbh->query("SELECT wrongcolumn FROM wrongtable");
?>

  大理石V型块

以上例程会输出:

Warning: PDO::query(): SQLSTATE[42S02]: Base table or view not found: 1146 Table ''test.wrongtable'' doesn''t exist in
/tmp/pdo_test.php on line 18
add a note add a note

  

PHP 函数中的错误处理是如何工作的?如何自定义错误处理?

PHP 函数中的错误处理是如何工作的?如何自定义错误处理?

php 函数的错误处理机制允许开发者定义如何处理错误和异常。默认情况下,错误信息将记录到日志并显示在标准错误输出中,但开发者可以使用 set_error_handler() 函数自定义错误处理。可以通过设置一个回调函数来自定义错误处理,该回调函数在发生错误时将被调用,并记录错误信息、错误级别、错误文件和行号等信息。

PHP 函数中的错误处理是如何工作的?如何自定义错误处理?

PHP 函数中的错误处理

简介

PHP 提供了强大的错误处理机制,允许开发者控制如何处理函数中的错误和异常。本篇文章将介绍 PHP 函数中错误处理的工作原理,以及如何自定义错误处理。

错误处理机制

立即学习“PHP免费学习笔记(深入)”;

PHP 函数中默认的错误处理机制如下:

  1. 当函数发生错误时,它会触发一个错误。
  2. PHP 引擎将错误信息记录到日志中,并显示在标准错误输出(stderr)中。
  3. 脚本不会停止执行,除非错误是致命的(例如语法错误)。

自定义错误处理

为了自定义错误处理,可以使用 set_error_handler() 函数。该函数接受一个回调函数作为参数,当函数发生错误时,该回调函数将被调用。

// 自定義錯誤處理函式
function my_error_handler($error_level, $error_message, $error_file, $error_line)
{
    // 處理錯誤訊息
    echo "錯誤級別:{$error_level}\n";
    echo "錯誤訊息:{$error_message}\n";
    echo "錯誤檔案:{$error_file}\n";
    echo "錯誤行號:{$error_line}\n";
}

// 設定自定義錯誤處理函式
set_error_handler("my_error_handler");
登录后复制

實戰案例

以下是一个自定义错误处理函数的示例,它将错误信息记录到一个文件中:

// 自定義錯誤處理函式
function log_error($error_level, $error_message, $error_file, $error_line)
{
    // 將錯誤訊息記錄到檔案中
    file_put_contents(''errors.log'', "錯誤級別:{$error_level}\n錯誤訊息:{$error_message}\n錯誤檔案:{$error_file}\n錯誤行號:{$error_line}\n\n", FILE_APPEND);
}

// 設定自定義錯誤處理函式
set_error_handler("log_error");

// 觸發一個錯誤
trigger_error("這是自定義錯誤訊息", E_USER_NOTICE);
登录后复制

當錯誤發生時,錯誤信息將被记录到 errors.log 文件中。

以上就是PHP 函数中的错误处理是如何工作的?如何自定义错误处理?的详细内容,更多请关注php中文网其它相关文章!

今天关于PHP – 错误处理php 错误和异常处理的分享就到这里,希望大家有所收获,若想了解更多关于MySql错误处理-错误处理的例子、PHP 7错误处理技巧:如何使用set_error_handler函数自定义错误处理函数、PHP PDO 错误与错误处理、PHP 函数中的错误处理是如何工作的?如何自定义错误处理?等相关知识,可以在本站进行查询。

本文标签: