4、php的错误异常处理(自定义异常类)

一、php自带的异常处理类:

<?php
class Exception {
    protected $message; // 异常信息
    protected $code; // 用户自定义异常代码
    protected $file; // 发生异常的文件名
    protected $line; // 发生异常的代码行号

    final private function __clone() { }

    public function __construct($message = "", $code = 0, Throwable $previous = null) { }

    final public function getMessage() { } //返回异常信息
    final public function getCode() { } // 返回异常代码
    final public function getFile() { } // 返回发生异常的文件名
    final public function getLine() { } // 返回发生异常的代码行号
    final public function getTrace() { } // backtrace() 数组
    final public function getPrevious() { } // 返回异常链中的前一个异常

    final public function getTraceAsString() { } // 已格成化成字符串的 getTrace() 信息

    /* 可重载的方法 */
    public function __toString() { } // 可输出的字符串
}

   二、为什么定义自己的异常类

          1、自定义的异常类必须是系统异常类的子类。

          2、当系统异常类的功能和需求不能满足的时候就需要定义自己的异常处理类。

 三、自定义处理异常类。

<?php
	/* 自定义的一个异常处理类,但必须是扩展内异常处理类的子类 */
	class MyException extends Exception{
		//重定义构造器使第一个参数 message 变为必须被指定的属性
		public function __construct($message, $code=0){
		    //可以在这里定义一些自己的代码
		 //建议同时调用 parent::construct()来检查所有的变量是否已被赋值
		    parent::__construct($message, $code);
		}	
		public function __toString() {        
          //重写父类方法,自定义字符串输出的样式
		  return __CLASS__.":[".$this->code."]:".$this->message."<br>";
		}
		public function customFunction() {    
             //为这个异常自定义一个处理方法
		     echo "按自定义的方法处理出现的这个类型的异常<br>";
		}
	}


    try { //使用自定义的异常类捕获一个异常,并处理异常
		$error = '允许抛出这个错误';       
		throw new MyException($error);    
         	//创建一个自定义的异常类对象,通过throw语句抛出
		echo 'Never executed'; 
			//从这里开始,try代码块内的代码将不会再被执行
	} catch (MyException $e) {        //捕获自定义的异常对象
		echo '捕获异常: '.$e;        //输出捕获的异常消息
		$e->customFunction();  //通过自定义的异常对象中的方法处理异常
	}
	echo '你好呀';              //程序没有崩溃继续向下执行

?>


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值