php异常

  1 <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  2 <?php
  3 $conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");
  4 mysql_select_db('test',$conn);
  5 //开始一个事务
  6 mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");
  7 try{
  8         $sql = "INSERT INTO `test` (`id`, `num`) VALUES (NULL, 1)";
  9         $sql2 = "INSERT INTO `test` (`did`, `num`) VALUES (NULL,2)";//这条我故意写错
 10         $res = mysql_query($sql);
 11         $res1 = mysql_query($sql2);
 12         $sql3="update test set num=1 where 1>2 and id=1000000";
 13         $res3=mysql_query($sql3);
 14         //if($res && $res1){
 15         if($res3){
 16                 mysql_query("COMMIT");
 17                 echo '提交成功。';
 18         }else{
 19                 mysql_query("ROLLBACK");
 20                 throw new Exception("数据回滚。");
 21         }
 22 }catch(Exception $e){
 23         //捕获异常
 24         echo 'Message: ' .$e->getMessage();
 25 }

 26 mysql_query("END");

https://www.w3school.com.cn/php/php_exception.asp

创建一个自定义的 Exception 类

创建自定义的异常处理程序非常简单。我们简单地创建了一个专门的类,当 PHP 中发生异常时,可调用其函数。该类必须是 exception 类的一个扩展。

这个自定义的 exception 类继承了 PHP 的 exception 类的所有属性,您可向其添加自定义的函数。

我们开始创建 exception 类:

<?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);
  }
 }

catch (customException $e)
 {
 //display custom message
 echo $e->errorMessage();
 }
?>

这个新的类是旧的 exception 类的副本,外加 errorMessage() 函数。正因为它是旧类的副本,因此它从旧类继承了属性和方法,我们可以使用 exception 类的方法,比如 getLine() 、 getFile() 以及 getMessage()。

例子解释:

上面的代码抛出了一个异常,并通过一个自定义的 exception 类来捕获它:

  1. customException() 类是作为旧的 exception 类的一个扩展来创建的。这样它就继承了旧类的所有属性和方法。
  2. 创建 errorMessage() 函数。如果 e-mail 地址不合法,则该函数返回一条错误消息
  3. 把 $email 变量设置为不合法的 e-mail 地址字符串
  4. 执行 "try" 代码块,由于 e-mail 地址不合法,因此抛出一个异常
  5. "catch" 代码块捕获异常,并显示错误消息
    A+
发布日期:2016年08月02日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: