PHP异常处理

原创 2015年07月10日 15:46:45

<span style="font-size:18px;"><?php 
//php5提供了基本的异常处理类,可直接使用 ,不需要自己再定义
// class Exception 
// { 
// protected $message = 'Unknown exception'; // 异常信息 
// protected $code = 0; // 用户自定义异常代码 
// protected $file; // 发生异常的文件名 
// protected $line; // 发生异常的代码行号 
// function __construct($message = null, $code = 0); 
// final function getMessage(); // 返回异常信息 
// final function getCode(); // 返回异常代码 
// final function getFile(); // 返回发生异常的文件名 
// final function getLine(); // 返回发生异常的代码行号 
// final function getTrace(); // backtrace() 数组 
// final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 
// /* 可重载的方法 */ 
// function __toString(); // 可输出的字符串 
// } 
?> </span>

<span style="font-size:18px;"><?php
//定义一个顶级异常处理
function my_exception($e){
    echo "我是顶级异常处理".$e->getMessage();
}
//修改默认的顶级异常处理函数(器)
set_exception_handler("my_exception");
//我们使用异常机制
try{
    addUser("shunping");
    updateUser("xiaoming1");
}
//catch用来 捕获异常,  Exception 是异常类(是php定义好一个类)
catch(Exception  $e){
    //返回异常信息
    echo "返回异常信息(失败信息) =".$e->getMessage()."<br/>";
    echo "返回异常代码 =".$e->getCode()."<br/>";
    echo "返回发生异常的文件名 =".$e->getFile()."<br/>";
    echo "返回发生异常的代码行号 =".$e->getLine()."<br/>"; 
    //echo " =".$e->getTrace()."<br/>"; // backtrace() 数组
    //可以继续抛出,这时将会启动php默认的异常处理器来处理
    //你也可以自己定义一个顶级异常处理器,对其进行处理
    throw $e;
}
function addUser($username){
    if($username=="shunping"){
        //添加ok
        echo "ok1";
    }else{
        //添加error
        //抛出异常.
        throw new Exception("添加失败");
    }
}
function updateUser($username){
    if($username=="xiaoming"){
        //正常修改
        echo "ok2";
    }else{
        //平抛出异常
        throw new Exception("修改失败");
    }
}
?></span>

异常使用的注意事项 :
通过上面的案例,我们可以看出,使用
try{
       //代码
}catch(Exception $e){
       //对异常处理
}
这种方式,可以更有效的控制错误.所以在开发中大量的使用.
1.当捕获到一个异常后,try{} 块里的后续代码不继续执行.
2.如果有一个异常发生,但是你没有catch 捕获,则提示一个Uncaught Exception.(系统.)
3.当catch一个异常,你可以处理,也可以不处理,不处理就可以
throw new Exception(”信息”);

4.你可以自定义异常类
class MyException extends Exception {
      
}
5. 使用多个 catch 代码块可以捕获不同种类的异常
try{
       //代码....
   //第一句话
   //第二句话
}catch(PDOException $e){
       //
}catch(Exception $e){
|
}
6. 也可简单使用 Exception 捕获
代码说明:

<span style="font-size:18px;"><?php
      
       //定义了一个异常
       class MyException1 extends Exception{
              
       }
       class MyException2 extends Exception{
      
       }
       function A(){
              
              throw new MyException1("a");
       }
       function B(){
              throw new MyException2("b")
       }
       function C(){
              
              try{
                     A();//抛出MyException1
                     B();//抛出MyException2
              }catch(Exception1 $e1){
                     $e1->getMessage();
              }catch(Exception2 $e2){
                     $e2->getMesage();
              }
       }
?></span>


异常的规则
需要进行异常处理的代码应该放入 try 代码块内,以便捕获潜在的异常。
每个 try 或 throw 代码块必须至少拥有一个对应的 catch 代码块。
使用多个 catch 代码块可以捕获不同种类的异常。
可以在 try 代码块内的 catch 代码块中抛出(再次抛出)异常。
简而言之:如果抛出了异常,就必须捕获它。或者使用顶级异常处理器处理。
如果不抛,即使有异常也不会捕获,不会处理



版权声明:

相关文章推荐

PHP中的异常处理

1.什么是异常?异常和错误有什么区别? 1.异常:程序运行与预期不太一致,与错误是两个不同的概念! 2.抛出和捕获异常 3.多个catch块的时候基类要往后放,否则基类捕获异常后就不会...

php错误与异常处理

以下内容来自《细说php》 // <?php /*  *   错误处理  *    1. 语法错误  *  *    2. 运行时的错误  * ...

PHP的错误和异常处理

PHP的错误和异常处理 - n哖苡逅 - 博客园  http://www.cnblogs.com/laojie4321/p/4187620.html PHP的错误和异常处理 ...

php的错误和异常处理

与java不同,在php中,异常必须手动抛出. 抛出并捕获一个异常,示例: getCode().":".$e->getMessage().""."in".

11. php的错误和异常处理(一)

1. 错误的分类 语法错误 程序无法运行,直接显示语法错误(最容易修复) 运行时错误 只有程序运行到某行,或在某些特定的情形下运行才会发生错误 逻辑错误 程序从头到尾运行都没有发生(并提示)错误,但...

PHP的面相对象性和异常处理函数

面向对象性 1、类中的预定方法 _construct( ):构造方法; _destruct( ):析构方法; _get( ):访问器; _set( ):修改器; _clone( ):克隆方法...

CI框架源码解析十七之异常处理类文件Exceptions.php

本篇博文讲述异常处理类文件Exceptions.php。使用CI框架,我们通常使用一下三个函数处理错误:一、show_error('消息' [, int $status_code = 500 ] );...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)