PHP的异常处理
2021-06-18 03:03
标签:异常处理 apple extend dump ext elf 方法 sel tle PHP 的异常处理 1、 什么是异常? 异常是指一个程序在运行过程出现的一个意外或者事件,中断了正常指令的执行,跳转到其他模块继续执行。 PHP 5 提供了一种新的面向对象的错误处理方法。 当异常被触发时,通常会发生: 2. 异常处理类 message 异常消息内容 code 异常代码 例如: PHP的异常处理 标签:异常处理 apple extend dump ext elf 方法 sel tle 原文地址:http://www.cnblogs.com/scmy707248119-/p/7263706.html
异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。
当前代码状态被保存
代码执行被切换到预定义的异常处理器函数
根据情况,处理器也许会从保存的代码状态重新开始执行代码,
终止脚本执行,或从代码中另外的位置继续执行脚本
我们将展示不同的错误处理方法:
异常的基本使用
创建自定义的异常处理器
多个异常
重新抛出异常
设置顶层异常处理器
PHP具有很多异常处理类,其中Exception是所有异常处理的基类。
Exception::__clone — 异常克隆{}
final private void Exception::__clone ( void ) 尝试克隆异常,这将导致一个致命错误。
Exception具有几个基本属性与方法,其中包括了:
file 抛出异常的文件名
line 抛出异常在该文件的行数
其中常用的方法有:
getTrace 获取异常追踪信息
getTraceAsString 获取异常追踪信息的字符串
getMessage 获取出错信息
在PHP代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入到 try 代码块内,以便捕获可能存在的异常。每个try至少对应一个 catch 块。使用多个 catch 可以捕获不同的类所产生的异常。当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。当然,PHP 允许在 catch 代码块内再次抛出(throw)异常。 扩展(extend) PHP 内置的异常处理类
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 is not 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;
}
// Continue execution
var_dump($o); // Null
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); // Null
echo "\n\n";
// 例子 3
try {
$o = new TestException(TestException::THROW_CUSTOM);
} catch (Exception $e) { // 捕获异常
echo "Default Exception caught\n", $e;
}
// 执行后续代码
var_dump($o); // Null
echo "\n\n";
// 例子 4
try {
$o = new TestException();
} catch (Exception $e) { // 没有异常,被忽略
echo "Default Exception caught\n", $e;
}
// 执行后续代码
var_dump($o); // TestException
echo "\n\n";
?>
上一篇:Memcache php配置
下一篇:aspectj 注解