第082讲 异常处理

image

<?php

    function addUser($username){
        if($username!="test"){
            throw new Exception("添加失败");
        }
    }

    function updataUser($username){
        if($username!="qb"){
            throw new Exception("更新失败");
        }
    }


    try{
        addUser("test1");
        updataUser("qb1");
    }catch(Exception $e){
        echo "失败";
        error_log($e->getMessage(),3,"d:/mylog.txt");
    }

?>

如上代码:
addUser 和 updataUser 任何一个为false就会抛出异常

如上代码还可以定义一个自定义的异常处理器(也叫顶级异常处理器)
代码如下:

<?php
    function my_exception($e){
        error_log("错误信息".$e->getMessage().$e->getLine()."行号",3,"d:/mylog.txt");
    }
    set_exception_handler("my_exception");//这玩意 跟错误处理器差不多。但是这个是用户自己定义的异常处理函数
    function addUser($username){
        if($username!="test"){
            throw new Exception("添加失败");
        }
    }

    function updataUser($username){
        if($username!="qb"){
            throw new Exception("更新失败");
        }
    }


    try{
        addUser("test");
        updataUser("qb1");
    }catch(Exception $e){
        //echo "失败"; //
        throw $e;
    }

?>

异常释义

Table of Contents 释义
Exception::__construct 异常构造函数
Exception::getMessage 获取异常消息内容
Exception::getPrevious 返回异常链中的前一个异常
Exception::getCode 获取异常代码
Exception::getFile 获取发生异常的程序文件名称
Exception::getLine 获取发生异常的代码在文件中的行号
Exception::getTrace 获取异常追踪信息
Exception::getTraceAsString 获取字符串类型的异常追踪信息
Exception::__toString 将异常对象转换为字符串
Exception::__clone 异常克隆

自定义异常

<?php
    class MyException1 extends Exception{

    }

    class MyException2 extends Exception{

    }

    function A(){
        throw new MyException1();
    }
    function B(){
        throw new MyException2();
    }
    try{
        A();
        B();
    }catch(MyException1 $e1){
        echo "11111";
    }catch(MyException2 $e2){
        echo "22222";
    }
?>

NOTICE

在php中老版本的函数 有些事没有 try catch 处理机制的

代码:

<?php
    try{
        $i = 8/0;
    }catch(Exception $e){

    }
?>
如上代码:
运行输出:Warning: Division by zero in D:\phpStudy\WWW\exceptionSelf.php on line 3
所以 在php中 有的地方 还只能用错误处理机制因为方法执行本身并没有抛出异常所有何谈捕获一说。

猜你喜欢

转载自blog.csdn.net/u014449096/article/details/80213929