Heim > php教程 > php手册 > PHP-Ausnahmen abfangen und behandeln

PHP-Ausnahmen abfangen und behandeln

WBOY
Freigeben: 2016-08-10 08:49:02
Original
1268 Leute haben es durchsucht

PHP-Ausnahmen abfangen und behandeln ~

Das System verfügt über eine Ausnahmebehandlung<?php<br /> header("Content-type:text/html;charset=utf-8");<br /> try<br /> {<br /> //业务处理 错误时抛出异常。<br /> $age = 130;<br /> if ($age > 120) {<br>         throw new Exception('年龄不能大于120岁。', 1001);<br>     }<br> } catch (Exception $e) {<br>     $err = [<br>         'code' => $e->getCode(),<br>         'msg'  => $e->getMessage(),<br>         'file'    => $e->getFile(),<br>         'line'   => $e->getLine()<br>     ];<br>     echo json_encode($err);<br> }<br> <br> 输出:{"code":1001,"msg":"u5e74u9f84u4e0du80fdu5927u4e8e120u5c81u3002","file":"/data/mi/demo.php","line":11} header("Content-type:text/html;charset=utf-8"); versuche es<?php<br /> header("Content-type:text/html;charset=utf-8");<br /> class proException extends Exception<br /> {<br /> //根据业务需求,自定义方法<br /> /**<br /> * 获取错误信息<br /> * @param int $type 类型 1=json 2=数组<br /> * @return array<br /> */<br /> public function getErrorInfo($type = 2)<br /> {<br /> $err = [<br /> &#039;code&#039; => $this->getCode(),<br>             'msg'  => $this->getMessage(),<br>             'file'    => $this->getFile(),<br>             'line'   => $this->getLine()<br>         ];<br>         if ($type == 1) {<br>             return json_encode($err);<br>         }<br>         return $err;<br>     }<br> }<br> <br> try<br> {<br>     //业务处理 错误时抛出异常。<br>     $age = 130;<br>     if ($age > 120) {<br>         throw new proException('年龄不能大于120岁。', 1001);<br>     }<br> } catch (proException $e) {<br>     $info = $e->getErrorInfo();<br>     var_dump($info);<br> }<br> <br> 输出:array(4) { ["code"]=> int(1001) ["msg"]=> string(27) "年龄不能大于120岁。" ["file"]=> string(17) "/data/mi/demo.php" ["line"]=> int(53) } {<b> //Ausnahme ausgelöst, wenn ein Geschäftsverarbeitungsfehler auftritt. </b> $age = 130;<code class="prettyprint linenums lang-php"> Wenn ($age > 120) {<br>             throw new Exception('Das Alter darf nicht größer als 120 Jahre sein.', 1001);<br> }<br> } Catch (Ausnahme $e) {<br> $err = [<br> 'code' => $e->getCode(),<br> 'msg' => $e->getMessage(),<br> 'file' => $e->getFile(),<br> 'line' => $e->getLine()<br> ];<br> Echo json_encode($err);<br> }<br> <br> Ausgabe: {"code":1001,"msg":u5e74u9f84u4e0du80fdu5927u4e8e120u5c81u3002, "file": /data/mi/demo.php, "line":11}
Benutzerdefinierte Ausnahmebehandlung header("Content-type:text/html;charset=utf-8");<🎜> Klasse proException erweitert Exception<🎜> {<🎜> //Passen Sie die Methode entsprechend den Geschäftsanforderungen an <🎜> /**<🎜> * Fehlermeldung erhalten<🎜> * @param int $type type 1=json 2=array<🎜> * @return array<🎜> ​​*/<🎜> Öffentliche Funktion getErrorInfo($type = 2)<🎜> {<🎜>          $err = [<🎜>             'code' => $this->getCode(), 'Msg' = & gt; $ this- & gt;                                                                                                                                                                   ‚line‘ => $this->getLine() ]; If ($type == 1) {                  return json_encode($err);         }           return $err; } } versuche es { //Ausnahme ausgelöst, wenn ein Geschäftsverarbeitungsfehler auftritt. $age = 130; Wenn ($age > 120) {               throw new proException('Das Alter darf nicht größer als 120 Jahre sein.', 1001); } } Catch (proException $e) { $info = $e->getErrorInfo(); var_dump($info); } Ausgabe: array(4) { ["code"]=> int(1001) ["msg"]=> "Das Alter darf nicht älter als 120 Jahre sein." string(17 ) "/data/mi/demo.php" ["line"]=> int(53) Mehrere Ausnahmen abfangen header("Content-type:text/html;charset=utf-8");<🎜> Klasse proException erweitert Exception<🎜> {<🎜> //Passen Sie die Fehlermethode an die Geschäftsanforderungen an<🎜> <🎜> /**<🎜> * Fehlermeldung erhalten<🎜> * @param int $type type 1=json 2=array<🎜> * @return array<🎜> ​​*/<🎜> Öffentliche Funktion getErrorInfo($type = 2)<🎜> {<🎜>          $err = [<🎜>            'code' => $this->getCode(),
'Msg' = & gt; $ this- & gt;                                                                                                                                                                   ‚line‘ => $this->getLine()
];
If ($type == 1) {
                 return json_encode($err);
        }
          return $err;
}
}

versuche es
{
If ($_GET['age'] > 100) {
Wirf eine neue proException('Customized Exception Handling', 1002);
} sonst {
Neue Ausnahme auslösen('Ausnahmebehandlung des Systems', 1002);
}
} Catch (proException $e) {
$info = $e->getErrorInfo();
var_dump($info);
} Catch (Ausnahme $e) {
echo $e->getMessage();
}

?age=110 Ausgabe: array(4) { ["code"]=> ["msg"]=> 17) "/data/mi/demo.php" ["line"]=>(64) }
?age=20 Ausgabe: Systemausnahmebehandlung.

Protokollierung//Fehlerausgabe deaktivieren error_reporting(0); //Fehlerbehandler festlegen<br> set_error_handler('errorHandler');<br> //Funktion zur Ausführung am Ende des Skripts<br> register_shutdown_function('fatalErrorHandler');<br> <br> /**<br> * Fehlerbehandlung <br> * @param int $err_no Fehlercode<br> * @param string $err_msg Fehlermeldung<br> * @param string $err_file Fehlerdatei<br> * @param int $err_line Fehlerzeilennummer<br> * @return string<br> ​*/<br> Funktion errorHandler($err_no = 0, $err_msg = '', $err_file = '', $err_line = 0)<br> {<br> $log = [<br>          '['.date('Y-m-d h-i-s').']',<br>           '|',<br>          $err_no,<br>           '|',<br>          $err_msg,<br>           '|',<br>           $err_file,<br>           '|',<br>          $err_line<br> ];<br> $log_path = '/data/mi/test.txt';<br> error_log(implode(' ',$log)."rn",3, $log_path);<br> //echo implode(' ',$log)."<br>";<br> }<br> <br> /**<br> * Schwerwiegende Fehler erkennen<br> * @return string<br> ​*/<br> Funktion fatalErrorHandler() {<br> $e = error_get_last();<br> switch ($e['type']) {<br> Fall 1:<br>            errorHandler($e['type'], $e['message'], $e['file'], $e['line']);<br>             Pause;<br> }<br> }<br> <br> Klasse DemoClass_1<br> {<br> Öffentlicher Funktionsindex()<br>{<br> ​​​​ //Hier tritt ein Warnfehler auf, starte errorHandler<br>           echo $undefinedVarible;<br> }<br> }<br> <br> $demo_1 = new DemoClass_1();<br> //Hier ist ein Warnfehler aufgetreten, der von errorHandler<br> erfasst wurde $demo_1->index();<br> //Ein schwerwiegender Fehler tritt auf und das Skript wird nicht mehr ausgeführt und löst fatalErrorHandler<br> aus $demo_2 = new DemoClass_2();<br> $demo_2->index();<br> <br> Nach dem Einschalten des Echos wird Folgendes ausgegeben: <br> [2016-08-07 09-01-34] |. 8 |. Undefinierte Variable: undefinierte Variable | [2016-08-07 09-01-34] |. 1 |. Klasse 'DemoClass_2' nicht gefunden |. /data/mi/demo.php | 1. register_shutdown_function kann auch beim API-Debugging verwendet werden, um jeden Anforderungswert und Rückgabewert aufzuzeichnen und das Debuggen zu erleichtern. <br> 2. Der Vorteil der Verwendung von „|“ zum Teilen besteht darin, dass es praktisch ist, das Protokoll mit awk zu teilen.
Quelle: http://mp.weixin.qq.com/s?__biz=MjM5NDM4MDIwNw==&mid=2448834645&idx=1&sn=32c96f1344a270755a8e33a6f7ddc1e8#rd

Für mehr [trockenen Informationsaustausch] folgen Sie bitte meinem persönlichen Abonnementkonto.




PHP-Ausnahmen abfangen und behandeln

Quelle:php.cn
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage