php异常处理函数

* PHP 5 添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw * 语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入 try 代码块内,以 * 便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。使用多个 catch * 可以捕获不同的类所产生的异常。当 try 代码块不再抛出异常或者找不到 catch 能匹配 * 所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。当然,PHP * 允许在 catch 代码块内再次抛出(throw)异常。 * 当一个异常被抛出时,其(抛出异常时所在的代码块)后的代码将不会继续 * 执行,而 PHP 就会尝试查找第一个能与之匹配的 catch。如果一个异常没有被捕获,而 * 且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一 * 个严重的错误,并且输出 Uncaught Exception ... (未捕获异常)的提示信息。 Example#1 抛出一个异常 de> getMessage(), "/n"; } // 继续执行 echo 'Hello World'; ?> de> 扩展 PHP 内置的异常处理类 用户可以用自定义的异常处理类来扩展 PHP 内置的异常处理类。以下的代码说明了在内置的异常处理类中,哪些属性和方法在子类中是可访问和可继承的。译者注:以下这段代码只为说明内置异常处理类的结构,它并不是一段有实际意义的可用代码。 de> de>如果使用自定义的类来扩展内置异常处理类,并且要重新定义构造函数的话,建议同时调用 parent::__construct() 来检查所有的变量是否已被赋值。当对象要输出字符串的时候,可以重载 __toString() 并自定义输出的样式。 Example#3 扩展 PHP 内置的异常处理类 de> code}]: {$this->message}/n"; } public function customFunction() { echo "A Custom function for this type of exception/n"; } } /** * 创建一个用于测试异常处理机制的类 */ class TestException { public $var; const THROW_NONE = 0; const THROW_CUSTOM = 1; const THROW_DEFAULT = 2; function __construct($avalue = self::THROW_NONE) { switch ($avalue) { case self::THROW_CUSTOM: // 抛出自定义异常 throw new MyException('1 is an invalid parameter', 5); break; case self::THROW_DEFAULT: // 抛出默认的异常 throw new Exception('2 isnt allowed as a parameter', 6); break; default: // 没有异常的情况下,创建一个对象 $this->var = $avalue; break; } } } // 例子 1 try { $o = new TestException(TestException::THROW_CUSTOM); } catch (MyException $e) { // 捕获异常 echo "Caught my exception/n", $e; $e->customFunction(); } catch (Exception $e) { // 被忽略 echo "Caught Default Exception/n", $e; } // 执行后续代码 var_dump($o); echo "/n/n"; // 例子 2 try { $o = new TestException(TestException::THROW_DEFAULT); } catch (MyException $e) { // 不能匹配异常的种类,被忽略 echo "Caught my exception/n", $e; $e->customFunction(); } catch (Exception $e) { // 捕获异常 echo "Caught Default Exception/n", $e; } // 执行后续代码 var_dump($o); echo "/n/n"; // 例子 3 try { $o = new TestException(TestException::THROW_CUSTOM); } catch (Exception $e) { // 捕获异常 echo "Default Exception caught/n", $e; } // 执行后续代码 var_dump($o); echo "/n/n"; // 例子 4 try { $o = new TestException(); } catch (Exception $e) { // 没有异常,被忽略 echo "Default Exception caught/n", $e; } // 执行后续代码 var_dump($o); echo "/n/n"; ?> de>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值