php 的异常处理try catch

1.异常处理的基本概念:

代码在try代码块内执行,如果出现错误我们可以使用throw关键字抛出一个异常,程序将在catch代码块内捕获异常。


2.异常控制结构:

try{
      throw new Exception('我是一个异常',1);
}catch(Exception $e) {
      echo $e->getCode().':'.$e->getMessage;
}


3.Exception类

Exception类是php为了做异常处理提供的内置类

该函数提供的方法为:

getCode(); // 返回传递给构造函数的错误码就是new Exception('我是一个异常',1);传递的第二个参数

getMessage();// 返回传递给构造函数的错误消息就是new Exception('我是一个异常',1);传递的第一个参数

getFile();// 返回产生异常代码文件的全路径

getLine();//  返回代码文件中产生异常的代码行

getTrace();// 返回一个包含产生异常的代码回退路径的数组

getTraceAsString();// 返回一个将getTrace信息格式化为字符串的信息

__toString(); // 这是php的魔术方法当我们直接打印对象的时候回调用这个函数。重要的是exception类中只有着一个方法是可以重载的。

try {
        if(!($fp = @fopen('aa.txt','ab')))
                throw new Exception('文件打开错误',1);
        if(!@flock($fp,LOCK_EX))
                throw new Exception('文件锁错误',2);
        if(!@fwrite($fp,'aaaa',4))
                throw new Exception('文件写入错误',3);
}
catch(Exception $e) {
        echo '错误信息:'.$e->getMessage().'错误码:'.$e->getCode().'错误行:'.$e->getLine().'错误文件:'.$e->getFile();
}


4.用户自定义异常

因为__toString()函数是可以重载的,这让我们可以很方便的实现自定义异常

<?php
class fileOpenException extends Exception {
        public function __toString() {
                return 'FileOpen:'.$this->getMessage();
        }
}
class fileLockException extends Exception {
        public function __toString() {
                return 'FileLock:'.$this->getMessage();
        }
}
class fileWriteException extends Exception {
        public function __toString() {
                return 'FileWrite:'.$this->getMessage();
        }
}
try {
        if(!($fp = @fopen('aa.txt','ab')))
                throw new fileOpenException('文件打开错误');
        if(!@flock($fp,LOCK_EX))
                throw new fileLockException('文件锁错误');
        if(!@fwrite($fp,'aaaa',4))
                throw new fileWriteException('文件写入错误');
}
catch(Exception $e) {
        echo $e;
}



通常良好的代码习惯要求:try的代码块代码量较小,并且在带码块结束处捕获异常,这样可以让异常处理代码更容易编写和维护,因为这样可以看到所有处理的代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP中,try-catch是一种异常处理机制。当我们在代码中使用try块包裹可能会抛出异常的代码,然后使用catch块来捕获并处理这些异常。引用\[1\]中的示例代码展示了一个简单的try-catch结构。在这个例子中,我们定义了一个错误处理函数zyferror,并使用set_error_handler函数将其注册为错误处理函数。当程序执行到echo 1/$num这一行时,由于$num的值为0,会触发一个除以零的错误。这个错误会被zyferror函数捕获并抛出一个Exception异常。然后,我们使用catch块来捕获并处理这个异常,输出异常的消息。引用\[2\]中的代码展示了如何使用try-catch来捕获Exception异常。而引用\[3\]中的代码展示了如何使用try-catch来捕获Throwable和Error异常。在这个例子中,我们定义了一个test函数,但是在try块中调用了一个不存在的函数test。这会导致一个Fatal Error错误。我们使用catch块来捕获并处理这个错误,输出错误的消息。所以,try-catch结构在PHP中是用来捕获和处理异常和错误的重要工具。 #### 引用[.reference_title] - *1* *2* *3* [PHP错误与异常处理trycatch](https://blog.csdn.net/HTML1033808020/article/details/108128981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值