Heim php教程 php手册 php中异常处理方法总结

php中异常处理方法总结

May 25, 2016 pm 04:39 PM
php异常处理

当异常被触发时,通常会发生:在PHP5中添加了类似于其它语言的错误异常处理模块。在 PHP代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。

使用多个 catch 可以捕获不同的类所产生的异常,当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。当然,PHP 允许在 catch 代码块内再次抛出(throw)异常,当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而 PHP 就会尝试查找第一个能与之匹配的 catch,如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出 Uncaught Exception ... (未捕获异常)的提示信息.

1、异常类的层级关系,代码如下:

class NotFoundException extends Exception{}

class InputException extends Exception{}

class DBException extends Exception{}

2、配置未捕捉异常的处理器,代码如下:

<?php
function exception_uncaught_handler(Exception $e) {
    header(&#39;Content-type:text/html; charset=utf-8&#39;);
    if ($e instanceof NotFoundException) exit($e->getMessage());
    elseif ($e instanceof DBException) exit($e->getMessage());
    else exit($e->getMessage());
}
set_exception_handler(&#39;exception_uncaught_handler&#39;);
?>
Nach dem Login kopieren

3、在数据库连接代码,手动抛出DBException异常但未使用try…catch进行捕获处理,该异常将被PHP自定义异常处理器,exception_uncaught_handler()函数处理:

<?php
$this->resConn = mysql_connect($CONFIGS[&#39;db_host&#39;], $CONFIGS[&#39;db_user&#39;], $CONFIGS[&#39;db_pwd&#39;]);
if (false == is_resource($this->resConn)) throw new DBException(&#39;数据库连接失败。&#39; . mysql_error($this->resConn));
?>
Nach dem Login kopieren

4、业务逻辑一瞥:

if (0 != strcmp($curAlbum->interest_id, $it))

throw new NotFoundException('很抱歉,你所访问的相册不存在');

以上就是PHP自定义异常处理器的具体使用方法.

php实例代码如下:

<?php
class customException extends Exception {
    public function errorMessage() {
        //error message
        $errorMsg = &#39;Error on line &#39; . $this->getLine() . &#39; in &#39; . $this->getFile() . &#39;: <b>&#39; . $this->getMessage() . &#39;</b> is not a valid E-Mail address&#39;;
        return $errorMsg;
    }
}
$email = "someone@example.com";
try {
    //check if
    if (filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {
        //throw exception if email is not valid
        throw new customException($email);
    }
    //check for "example" in mail address
    if (strpos($email, "example") !== FALSE) {
        throw new Exception("$email is an example e-mail");
    }
}
catch(customException $e) {
    echo $e->errorMessage();
}
catch(Exception $e) {
    echo $e->getMessage();
}
?>
Nach dem Login kopieren

例子解释:上面的代码测试了两种条件,如何任何条件不成立,则抛出一个异常.

1.customException() 类是作为旧的 exception 类的一个扩展来创建的,这样它就继承了旧类的所有属性和方法.

2.创建 errorMessage() 函数,如果 e-mail 地址不合法,则该函数返回一个错误消息.

3.执行 "try" 代码块,在第一个条件下,不会抛出异常.

4.由于 e-mail 含有字符串 "example",第二个条件会触发异常.

5."catch" 代码块会捕获异常,并显示恰当的错误消息.

如果没有捕获 customException,紧紧捕获了 base exception,则在那里处理异常,重新抛出异常,有时,当异常被抛出时,您也许希望以不同于标准的方式对它进行处理,可以在一个 "catch" 代码块中再次抛出异常,代码如下:

总结:PHP异常的使用方法分三步:

第一步:定义异常类,如果不定义就用系统默认的异常类;

第二步:当出现异常时用 throw 抛出异常,例如 ex1($num2);异常的参数是$num2用该异常的getMessage()获取;

第三步:触发异常,用try子句,当满足条件时 throw new ex1($num);

第四步:catch捕获异常 catch (ex2 $e),相当于实例化一个定义好的异常类ex2为$e;

注意,异常可以定义多个,但是只能触发一个,也就是说只能用catch捕获一个异常.

基本异常类,创建可抛出一个异常的函数:

<?php
function num($num) {
    if ($num > 1) { //异常抛出条件
        $msg = "数值不能大于1″;//异常提示信息 
  throw new Exception($msg);//抛出异常 
 } 
 echo "数值小于1″;
    }
    //在 "try" 代码块中触发异常
    try {
        num(3);
        echo "执行正常";
    }
    //捕获异常
    catch(Exception $e) {
        echo "错误信息:" . $e->getMessage(); //Exception()的系统方法获取异常信息
        echo "错误文件:" . $e->getFile(); //Exception()的系统方法获取异常文件名
        echo "行数:" . $e->getLine(); //Exception()的系统方法获取异常行数
        
    }
    //======================================================================
    echo "<br>========================================================<br>";
    //扩展基本异常类
    function checkEmail($email) { //定义一个可以抛出异常的判断EMAIL合法性的函数
        if (filter_var($email, FILTER_VALIDATE_EMAIL) == false) {
            throw new checkEmailException($email); //抛出异常用EMAIL做参数
            
        }
        echo "邮件合法";
    }
    class checkEmailException extends Exception { //定义扩展异常类
        public function errormsg() {
            $msg = "错误原因:" . $this->getMessage() . "不是一个合法的EMAIL地址!";
            $msg.= "错误文件名:" . $this->getFile();
            $msg.= "错误行数:" . $this->getLine();
            echo $msg;
        }
    }
    $email = "email…..@chhua.com";
    try { //触发异常
        checkEmail($email);
    }
    //捕获异常
    catch(checkEmailException $e) {
        $e->errormsg();
    }
    //==================================多个异常的捕获
    echo "<br>===================================================<br>";
    class ex1 extends Exception { //定义一个异常类
        public function msg() {
            $msg = "错误原因:" . $this->getMessage() . "大于100<br>";
            $msg.= "错误文件:" . $this->getFile() . "<Br>";
            $msg.= "错误代码:" . $this->getCode() . "<br>";
            $msg.= "行数:" . $this->getLine() . "<br>";
            echo $msg;
        }
    }
    class ex2 extends Exception { //定义一个异常类
        public function msg() {
            $msg = "错误原因:" . $this->getMessage() . "等于100<br>";
            $msg.= "错误文件:" . $this->getFile() . "<Br>";
            $msg.= "行数:" . $this->getLine() . "<br>";
            echo $msg;
        }
    }
    $num2 = 100;
    try {
        if ($num2 > 100) { //当条件满足时触发
            throw new ex1($num2);
        }
        if ($num2 == 100) { //当条件满足时触发
            throw new ex2($num2);
        }
    }
    catch(ex2 $e) { //捕获触发的异常
        $e->msg();
    }
    catch(ex1 $e) { //捕获触发的异常
        $e->msg();
    }
?>
Nach dem Login kopieren


文章地址:

转载随意^^请带上本文地址!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Schwerwiegender PHP-Fehler: Nicht abgefangene Ausnahmelösung „Exception'. Schwerwiegender PHP-Fehler: Nicht abgefangene Ausnahmelösung „Exception'. Aug 18, 2023 pm 03:28 PM

PHP ist eine weit verbreitete serverseitige Programmiersprache, die Websites leistungsstarke und dynamische Funktionen bietet. In der Praxis können Entwickler jedoch auf eine Vielzahl von Fehlern und Ausnahmen stoßen. Einer der häufigsten Fehler ist PHPFatalerror:UncaughtException'Exception'. In diesem Artikel untersuchen wir die Ursachen dieses Fehlers und wie man ihn beheben kann. Das Konzept der Ausnahme In PHP bezieht sich eine Ausnahme auf die unerwartete Situation, die während des laufenden Prozesses des Programms auftritt und dazu führt

Tipps zur PHP-Ausnahmebehandlung: So fangen und behandeln Sie mehrere Ausnahmen mit try...catch-Blöcken Tipps zur PHP-Ausnahmebehandlung: So fangen und behandeln Sie mehrere Ausnahmen mit try...catch-Blöcken Jul 29, 2023 pm 01:05 PM

Tipps zur PHP-Ausnahmebehandlung: So verwenden Sie try...catch-Blöcke, um mehrere Ausnahmen abzufangen und zu behandeln. Einführung: Bei der PHP-Anwendungsentwicklung ist die Ausnahmebehandlung ein sehr wichtiger Teil. Wenn im Code ein Fehler oder eine Ausnahme auftritt, kann eine angemessene Ausnahmebehandlung die Robustheit und Zuverlässigkeit des Programms verbessern. In diesem Artikel wird erläutert, wie Sie mit dem try...catch-Block mehrere Ausnahmen erfassen und behandeln können, um Entwicklern eine flexiblere und effizientere Ausnahmebehandlung zu ermöglichen. Einführung in die Ausnahmebehandlung. Ausnahmen beziehen sich auf Fehler oder Sondersituationen, die bei der Ausführung eines Programms auftreten. Wenn eine Ausnahme auftritt

Best Practices für die Ausnahmeklassifizierung in PHP-Programmen Best Practices für die Ausnahmeklassifizierung in PHP-Programmen Jun 06, 2023 am 08:01 AM

Beim Schreiben von PHP-Code ist die Ausnahmebehandlung ein wesentlicher Bestandteil, um den Code robuster und wartbarer zu machen. Allerdings muss auch die Ausnahmebehandlung mit Vorsicht angewendet werden, da sie sonst zu weiteren Problemen führen kann. In diesem Artikel werde ich einige Best Practices für die Ausnahmeklassifizierung in PHP-Programmen vorstellen, damit Sie die Ausnahmebehandlung besser nutzen und die Codequalität verbessern können. Das Konzept der Ausnahme In PHP bezieht sich eine Ausnahme auf einen Fehler oder eine unerwartete Situation, die auftritt, wenn das Programm ausgeführt wird. Normalerweise führen Ausnahmen dazu, dass das Programm nicht mehr ausgeführt wird und eine Ausnahmemeldung ausgegeben wird.

Möglichkeiten zur Verwendung von PHP-Ausnahme- und Fehlertoleranzmechanismen? Möglichkeiten zur Verwendung von PHP-Ausnahme- und Fehlertoleranzmechanismen? Jun 30, 2023 am 10:13 AM

Wie verwende ich den Ausnahmebehandlungs- und Fehlertoleranzmechanismus von PHP? Einführung: Bei der PHP-Programmierung sind Ausnahmebehandlungs- und Fehlertoleranzmechanismen sehr wichtig. Wenn während der Codeausführung Fehler oder Ausnahmen auftreten, können diese Fehler mithilfe der Ausnahmebehandlung erfasst und behandelt werden, um die Stabilität und Zuverlässigkeit des Programms sicherzustellen. In diesem Artikel wird erläutert, wie Sie den Ausnahmebehandlungs- und Fehlertoleranzmechanismus von PHP verwenden. 1. Grundkenntnisse der Ausnahmebehandlung: Was ist eine Ausnahme? Ausnahmen sind Fehler oder ungewöhnliche Bedingungen, die während der Codeausführung auftreten, einschließlich Syntaxfehler, Laufzeitfehler, Logikfehler usw. Wenn anders

Wie implementiert man eine globale Ausnahmebehandlung in der PHP-Backend-Funktionsentwicklung? Wie implementiert man eine globale Ausnahmebehandlung in der PHP-Backend-Funktionsentwicklung? Aug 05, 2023 pm 03:36 PM

Wie implementiert man eine globale Ausnahmebehandlung in der PHP-Backend-Funktionsentwicklung? Bei der PHP-Backend-Entwicklung ist die Ausnahmebehandlung ein sehr wichtiger Teil. Es kann uns helfen, Fehler im Programm zu erkennen und angemessen zu behandeln, wodurch die Systemstabilität und -leistung verbessert wird. In diesem Artikel wird die Implementierung der globalen Ausnahmebehandlung in der PHP-Back-End-Funktionsentwicklung vorgestellt und entsprechende Codebeispiele bereitgestellt. PHP bietet einen Ausnahmebehandlungsmechanismus, um Ausnahmen abzufangen und sie entsprechend über die Schlüsselwörter „try“ und „catch“ zu behandeln. Die globale Ausnahmebehandlung bezieht sich auf alle

Umgang mit Datenausnahmen und Fehlerbehandlungsstrategien bei der Implementierung von APIs in PHP Umgang mit Datenausnahmen und Fehlerbehandlungsstrategien bei der Implementierung von APIs in PHP Jun 17, 2023 am 08:12 AM

Da die Verwendung von APIs immer weiter verbreitet wird, müssen wir bei der Entwicklung und Verwendung von APIs auch Strategien zur Behandlung von Datenausnahmen und Fehlern berücksichtigen. In diesem Artikel wird untersucht, wie PHP diese Probleme bei der Implementierung von APIs behandelt. 1. Umgang mit Datenanomalien Es kann viele Gründe für Datenanomalien geben, wie z. B. Benutzereingabefehler, Netzwerkübertragungsfehler, interne Serverfehler usw. Bei der Entwicklung in PHP können wir die folgenden Methoden verwenden, um Datenausnahmen zu behandeln. Geben Sie den entsprechenden HTTP-Statuscode zurück. Das HTTP-Protokoll definiert viele Statuscodes, die uns helfen können

PHP-Zeitverarbeitungsausnahme: Fehler bei der Rückgabe der Zeit PHP-Zeitverarbeitungsausnahme: Fehler bei der Rückgabe der Zeit Mar 28, 2024 pm 01:51 PM

PHP-Zeitverarbeitungsausnahme: Fehler bei der Rückgabe der Zeit, spezifische Codebeispiele sind erforderlich. In der Webentwicklung ist die Zeitverarbeitung eine sehr häufige Anforderung. Als häufig verwendete serverseitige Skriptsprache bietet PHP eine Fülle von Zeitverarbeitungsfunktionen und -methoden. In praktischen Anwendungen kommt es jedoch manchmal zu ungewöhnlichen Situationen, in denen die Rückkehrzeit falsch ist, was durch Fehler im Code oder unsachgemäße Verwendung verursacht werden kann. In diesem Artikel stellen wir einige häufige Situationen vor, die zu Rückkehrzeitfehlern führen können, und stellen einige spezifische Codebeispiele bereit, um den Lesern das Verständnis zu erleichtern

Welche Fehler werden bei der PHP-Ausnahmebehandlung abgefangen? Welche Fehler werden bei der PHP-Ausnahmebehandlung abgefangen? Aug 01, 2023 pm 02:21 PM

Die von der PHP-Ausnahmebehandlung erfassten Fehler sind: 1. Schwerwiegender Fehler, der dazu führt, dass die Ausführung des Skripts sofort abgebrochen wird. 2. Schwerwiegender Fehler, der dazu führt, dass die Ausführung des Skripts abgebrochen wird. 3. Ausnahmebehandler Verwenden Sie den Try-Catch-Anweisungsblock, um die Throw-Ausnahmen abzufangen. 4. Benutzerdefinierte Fehlerbehandlungsfunktionen, die einige integrierte Fehlerbehandlungsfunktionen bereitstellen. 5. Fehlerprotokollierung, um Fehler besser zu verfolgen und zu debuggen.

See all articles