mingyunyuziyou

PHP异常处理之抛出一个异常

作者: 秒速五厘米     
 


PHP异常处理之抛出一个异常


从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被执行。


既然抛出异常会中断程序执行,那么为什么还需要使用异常处理?


异常抛出被用于在遇到未知错误,或者不符合预先设定的条件时,通知客户程序,以便进行其他相关处理,不至于使程序直接报错中断。


当代码中使用了try catch的时候,抛出的异常会在catch中捕获,否则会直接中断。


1、基本语法

        try{
           //可能出现错误或异常的代码
           //catch表示捕获,Exception是php已定义好的异常类
       } catch(Exception $e){
           //对异常处理,方法:
               //1、自己处理
               //2、不处理,将其再次抛出
       }

2、处理处理程序应当包括:

Try - 使用异常的函数应该位于 "try"  代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。

Throw - 这里规定如何触发异常。注意:每一个 "throw" 必须对应至少一个 "catch",当然可以对应多个"catch"

Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象。


//创建可抛出一个异常的函数
function checkNum($number){
    if($number>1){
        throw new Exception("异常提示-数字必须小于等于1");
    }
    return true;
}

//在 "try" 代码块中触发异常
try{
    checkNum(2);
    //如果异常被抛出,那么下面一行代码将不会被输出
    echo '如果能看到这个提示,说明你的数字小于等于1';
}catch(Exception $e){
    //捕获异常
    echo '捕获异常: ' .$e->getMessage();
}


上面代码将获得类似这样一个错误:


捕获异常:: 异常提示-数字必须小于等于1


例子解释:


上面的代码抛出了一个异常,并捕获了它:


创建 checkNum() 函数。它检测数字是否大于 1。如果是,则抛出一个异常。

在 "try" 代码块中调用 checkNum() 函数。

checkNum() 函数中的异常被抛出

"catch" 代码块接收到该异常,并创建一个包含异常信息的对象 ($e)。

通过从这个 exception 对象调用 $e->getMessage(),输出来自该异常的错误消息