PHP异常处理

异常处理

使用 try-catch 语句实现异常处理, 使用 throw 语句抛出异常, 在 PHP 中必须手动抛出异常, 不像 JAVA 可以自动抛出异常。抛出异常时使用 throw 关键字, 如果 throw 语句被执行, 则其后的代码都不执行, 而是转到 catch 中的代码执行, 这样程序就不会崩溃, 可以继续执行


try {
    ...
} catch(Exception $e) {
    ...
}

扩展 PHP 异常处理类

PHP 可扩展的属性和方法如下:


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() {}
    // backtrace() 数组
    final function getTrace() {}
    // 格式化为字符串的 getTrace() 函数
    final function getTraceAsString() {}
    // 可重载的方法, 可输出的字符串
    function __toString() {}
}

捕获多个异常

n __toString() {}
}

捕获多个异常

可能发生多个异常, 并且每个异常的处理方式都不一样时, 可以使用多个 catch 语句进行处理, 当 try 代码块不再抛出异常或者找不到可以匹配的 catch 语句时, PHP 会跳转到最后一个 catch 语句执行。多个 catch 语句时, 每个 catch 语句捕获的异常必须不同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在thinkphp6中,异常处理是通过异常类来实现的。当系统出现异常时,会抛出一个异常对象,我们可以通过捕获这个异常对象来进行异常处理。以下是一个简单的异常处理示例: 1. 在控制器中抛出一个异常: ```php throw new \think\Exception('这是一个异常'); ``` 2. 在应用的异常处理类中进行异常处理: ```php namespace app\exception; use think\exception\Handle; use think\Response; use Throwable; class Http extends Handle { public function render($request, Throwable $e): Response { // 根据不同异常类型进行处理 if ($e instanceof \think\Exception) { // 返回错误信息 return json(['msg' => $e->getMessage()], 500); } // 其他异常交给系统处理 return parent::render($request, $e); } } ``` 注意,上面的代码中,我们继承了think\exception\Handle类,并重写了它的render方法。render方法接受两个参数:$request表示当前请求对象,$e表示抛出的异常对象。在这个方法中,我们可以根据不同的异常类型进行处理,并返回一个Response对象。如果我们不需要对异常进行特殊处理,可以直接调用父类的render方法,让系统进行默认的异常处理。 3. 在应用的配置文件中配置异常处理类: ```php return [ // 异常处理类 'exception_handle' => 'app\exception\Http', ]; ``` 在上面的配置中,我们将异常处理类设置为app\exception\Http。这样,在应用出现异常时,系统就会自动调用这个类的render方法进行异常处理。 除了上面的方法,thinkphp6还提供了其他的异常处理方式,比如使用自定义的异常类、使用异常监听器等。你可以根据自己的需求选择合适的方式进行异常处理

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值