php猪哥,php异常处理 - 猪哥技术Blog的个人空间 - OSCHINA - 中文开源技术交流社区...

异常是指,出乎意外的事情发生。当异常被抛出时,其后的代码不会继续执行,PHP 会尝试查找匹配的 “catch” 代码块。如果查找不到catch并且又没用使用 set_exception_handler() 作相应的处理的话,那么将发生一个严重的错误,并且输出 “Uncaught Exception” (未捕获异常)的错误消息。捕捉异常能使代码更加健壮。

php自带一个异常类。可以通过throw new Exception(message,code,previous);来抛出异常。例如

1

throw new Exception("趴树上的猪",1);

运行上面的代码将看到如图的效果

fdc6120a1cd58e820e15121b054bb7ec.png

我们可以通过try{} catch(){}来捕获异常还是原来的代码

1

try{

2

throw new Exception("趴在树上的猪",1);

3

}catch(Exception $e){//可以理解为捕获的异常赋值给$e这个$e而是自定义的

4

var_dump($e);

5

}

这段你将看到

01

object(Exception)#1 (7) {

02

["message":protected]=>

03

string(12) "趴在树上的猪"

04

["string":"Exception":private]=>

05

string(0) ""

06

["code":protected]=>

07

int(1)

08

["file":protected]=>

09

string(22) "D:\wamp\www\test\a.php"

10

["line":protected]=>

11

int(4)

12

["trace":"Exception":private]=>

13

array(0) {

14

}

15

["previous":"Exception":private]=>

16

NULL

17

}

18

这样的输出。

方法:getMessage — 获取异常消息内容 这里将得到 趴在树上的猪 在本例中你可以这样得到$e->getMessage();

getPrevious — 返回异常链中的前一个异常

getCode — 获取异常代码 本例中可以这样得到$e->getCode()

getFile — 获取发生异常的程序文件名称

getLine — 获取发生异常的代码在文件中的行号

getTrce — 获取异常追踪信息

getTraceAsString — 获取字符串类型的异常追踪信息

__toString — 将异常对象转换为字符串

__clone — 异常克隆

如果使用自定义的类来扩展内置异常处理类,并且要重新定义构造函数的话,建议同时调用 parent::__construct()来检查所有的变量是否已被赋值。当对象要输出字符串的时候,可以重载 __toString() 并自定义输出的样式。

一个自定义异常的例子<

01

/**

02

* 自定义一个异常处理类

03

*/

04

class ZhugeException extends Exception

05

{

06

// 重定义构造器使 message 变为必须被指定的属性

07

public function __construct($message, $code = 0) {

08

// 自定义的代码

09

10

// 确保所有变量都被正确赋值

11

parent::__construct($message, $code);

12

}

13

14

// 自定义字符串输出的样式

15

public function __toString() {

16

return __CLASS__ . “: qaforcode.net [{$this->code}]: {$this->message}\n”;

17

}

18

19

public function customFunction() {

20

echo “自定义函数\n”;

21

}

22

}

23

24

try{

25

throw new ZhugeException(“爬树上的猪”,1);

26

27

}catch(ZhugeException $e){

28

var_dump($e);

29

}

因为自定义异常是Exception的子类,所以将上例chatch改成catch(Exception $e)也是成立的。在实际使用中Exception要放到最后,不然异常将只能被Exception捕捉到,这样不利于针对不同的异常做不同的处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值