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('Content-type:text/html; charset=utf-8'); if ($e instanceof NotFoundException) exit($e->getMessage()); elseif ($e instanceof DBException) exit($e->getMessage()); else exit($e->getMessage()); } set_exception_handler('exception_uncaught_handler'); ?>
3、在数据库连接代码,手动抛出DBException异常但未使用try…catch进行捕获处理,该异常将被PHP自定义异常处理器,exception_uncaught_handler()函数处理:
<?php $this->resConn = mysql_connect($CONFIGS['db_host'], $CONFIGS['db_user'], $CONFIGS['db_pwd']); if (false == is_resource($this->resConn)) throw new DBException('数据库连接失败。' . mysql_error($this->resConn)); ?>
4、业务逻辑一瞥:
if (0 != strcmp($curAlbum->interest_id, $it))
throw new NotFoundException('很抱歉,你所访问的相册不存在');
以上就是PHP自定义异常处理器的具体使用方法.
php实例代码如下:
<?php class customException extends Exception { public function errorMessage() { //error message $errorMsg = 'Error on line ' . $this->getLine() . ' in ' . $this->getFile() . ': <b>' . $this->getMessage() . '</b> is not a valid E-Mail address'; 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(); } ?>
例子解释:上面的代码测试了两种条件,如何任何条件不成立,则抛出一个异常.
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(); } ?>
文章地址:
转载随意^^请带上本文地址!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP ialah bahasa pengaturcaraan bahagian pelayan yang digunakan secara meluas yang menyediakan keupayaan berkuasa dan dinamik kepada tapak web. Walau bagaimanapun, dalam amalan, pembangun mungkin menghadapi pelbagai jenis ralat dan pengecualian. Salah satu ralat biasa ialah PHPFatalerror:Uncaughtexception'Exception'. Dalam artikel ini, kami akan meneroka punca ralat ini dan cara membetulkannya. Konsep pengecualian Dalam PHP, pengecualian merujuk kepada situasi tidak dijangka yang dihadapi semasa proses menjalankan program, mengakibatkan

Petua pengendalian pengecualian PHP: Cara menggunakan cuba...tangkap blok untuk menangkap dan mengendalikan berbilang pengecualian Pengenalan: Dalam pembangunan aplikasi PHP, pengendalian pengecualian adalah bahagian yang sangat penting. Apabila ralat atau pengecualian berlaku dalam kod, pengendalian pengecualian yang munasabah boleh meningkatkan keteguhan dan kebolehpercayaan program. Artikel ini akan memperkenalkan cara menggunakan blok try...catch untuk menangkap dan mengendalikan berbilang pengecualian, membantu pembangun melaksanakan pengendalian pengecualian yang lebih fleksibel dan cekap. Pengenalan kepada Pengendalian PengecualianPengecualian merujuk kepada ralat atau situasi khas yang berlaku apabila program dijalankan. Apabila pengecualian berlaku

Apabila menulis kod PHP, pengendalian pengecualian adalah bahagian penting untuk menjadikan kod lebih mantap dan boleh diselenggara. Walau bagaimanapun, pengendalian pengecualian juga perlu digunakan dengan berhati-hati, jika tidak, ia boleh menyebabkan lebih banyak masalah. Dalam artikel ini, saya akan berkongsi beberapa amalan terbaik untuk klasifikasi pengecualian dalam program PHP untuk membantu anda menggunakan pengendalian pengecualian dengan lebih baik untuk meningkatkan kualiti kod. Konsep pengecualian Dalam PHP, pengecualian merujuk kepada ralat atau situasi yang tidak dijangka yang berlaku semasa program dijalankan. Biasanya, pengecualian menyebabkan program berhenti berjalan dan mengeluarkan mesej pengecualian.

Bagaimana untuk menggunakan mekanisme pengendalian pengecualian dan toleransi kesalahan PHP? Pengenalan: Dalam pengaturcaraan PHP, pengendalian pengecualian dan mekanisme toleransi kesalahan adalah sangat penting. Apabila ralat atau pengecualian berlaku semasa pelaksanaan kod, pengendalian pengecualian boleh digunakan untuk menangkap dan mengendalikan ralat ini untuk memastikan kestabilan dan kebolehpercayaan program. Artikel ini akan memperkenalkan cara menggunakan mekanisme pengendalian pengecualian dan toleransi kesalahan PHP. 1. Pengetahuan asas pengendalian pengecualian: Apakah pengecualian? Pengecualian ialah ralat atau situasi luar biasa yang berlaku semasa pelaksanaan kod, termasuk ralat sintaks, ralat masa jalan, ralat logik, dsb. Apabila berbeza

Dalam PHP, pengendalian pengecualian dicapai melalui percubaan, menangkap, akhirnya, dan membuang kata kunci. 1) blok percubaan mengelilingi kod yang boleh membuang pengecualian; 2) Blok tangkapan mengendalikan pengecualian; 3) Akhirnya Blok memastikan bahawa kod itu sentiasa dilaksanakan; 4) Lemparan digunakan untuk membuang pengecualian secara manual. Mekanisme ini membantu meningkatkan keteguhan dan mengekalkan kod anda.

Bagaimana untuk melaksanakan pengendalian pengecualian global dalam pembangunan fungsi backend PHP? Dalam pembangunan back-end PHP, pengendalian pengecualian adalah bahagian yang sangat penting. Ia boleh membantu kami menangkap ralat dalam program dan mengendalikannya dengan sewajarnya, dengan itu meningkatkan kestabilan dan prestasi sistem. Artikel ini akan memperkenalkan cara melaksanakan pengendalian pengecualian global dalam pembangunan fungsi back-end PHP dan menyediakan contoh kod yang sepadan. PHP menyediakan mekanisme pengendalian pengecualian Kami boleh menangkap pengecualian dan mengendalikannya dengan sewajarnya melalui kata kunci cuba dan tangkap. Pengendalian pengecualian global merujuk kepada semua

Memandangkan penggunaan API menjadi semakin meluas, kami juga perlu mempertimbangkan pengecualian data dan strategi pengendalian ralat semasa pembangunan dan penggunaan API. Artikel ini akan meneroka cara PHP mengendalikan isu ini apabila melaksanakan API. 1. Mengendalikan anomali data Mungkin terdapat banyak sebab untuk anomali data, seperti ralat input pengguna, ralat penghantaran rangkaian, ralat pelayan dalaman, dsb. Apabila membangun dalam PHP, kita boleh menggunakan kaedah berikut untuk mengendalikan pengecualian data. Kembalikan kod status HTTP yang sesuai Protokol HTTP mentakrifkan banyak kod status yang boleh membantu kami

Pengecualian pemprosesan masa PHP: ralat dalam masa pemulangan, contoh kod khusus diperlukan Dalam pembangunan web, pemprosesan masa adalah keperluan yang sangat biasa. Sebagai bahasa skrip sebelah pelayan yang biasa digunakan, PHP menyediakan banyak fungsi dan kaedah pemprosesan masa. Walau bagaimanapun, dalam aplikasi praktikal, kadangkala anda menghadapi situasi tidak normal di mana masa pemulangan adalah salah, yang mungkin disebabkan oleh ralat dalam kod atau penggunaan yang tidak betul. Dalam artikel ini, kami akan memperkenalkan beberapa situasi biasa yang boleh menyebabkan ralat masa balik dan menyediakan beberapa contoh kod khusus untuk membantu pembaca memahami dengan lebih baik.
