工作中会经常用到异常的调试
所以会用到异常类
<?php
Exception implements Throwable {
/* Properties */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* Methods */
public __construct ([ string $message = "" [, int $code = 0 [, Throwable $previous = NULL ]]] )
final public getMessage ( void ) : string
final public getPrevious ( void ) : Throwable
final public getCode ( void ) : mixed
final public getFile ( void ) : string
final public getLine ( void ) : int
final public getTrace ( void ) : array
final public getTraceAsString ( void ) : string
public __toString ( void ) : string
final private __clone ( void ) : void
}
结合实际我们会自定义一些异常类来处理特定的事情
自定义异常类的编写
Class dbException extends \Exception
{
private $errorCode;
private $sql;
/**
* 初始化异常
*/
public function __construct($code = "", $message = "", $sql = "")
{
parent::__construct($message, 0);
$this->errorCode = $code;
$this->sql = $sql;
}
/**
* 获取错误码
*/
public function getErrorCode()
{
return $this->errorCode;
}
/**
* 获取错误的sql语句
*/
public function getSql():string
{
return $this->sql;
}
/**
* 格式化输出异常码,异常信息,请求id
* @return string
*/
public function __toString()
{
return "[".__CLASS__."]"." code:".$this->errorCode.
" message:".$this->getMessage().
" sql:".$this->sql;
}
}
我们简单测试一下自定义的异常类
运行一下我们只走到了Exception,但我们不是没结果的时候拋出dbException么?
其实是没走到throw new dbException,语句已经有错,直接底层拋出Exception
改写一下函数
这样就捕获到异常了
结论
提高效率,写好异常类是很有必要的!