几种php异常类的案例
<?php
/**
*
* 自定义一个异常处理类
*/
class MyException extends Exception
{
// 重定义构造器使 message 变为必须被指定的属性
public function __construct($message, $code = 0) {
// 自定义的代码
// 确保所有变量都被正确赋值
parent::__construct($message, $code);
}
// 自定义字符串输出的样式 */
public function __toString() {
return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
}
public function customFunction() {
echo "A Custom function for this type of exception\n";
}
}
// 例子 1:抛出自定义异常,但没有默认的异常
echo ' 例子 1', '<br>';
try {
// 抛出自定义异常
throw new MyException('1 is an invalid parameter', 5);
} catch (MyException $e) { // 捕获异常
echo "Caught my exception\n", $e;
$e->customFunction();
} catch (Exception $e) { // 被忽略
echo "Caught Default Exception\n", $e;
}
// 执行后续代码
// 例子 2: 抛出默认的异常 但没有自定义异常
echo '<br>', ' 例子 2:', '<br>';
try {
// 抛出默认的异常
throw new Exception('2 isnt allowed as a parameter', 6);
} catch (MyException $e) { // 不能匹配异常的种类,被忽略
echo "Caught my exception\n", $e;
$e->customFunction();
} catch (Exception $e) {// 捕获异常
echo "Caught Default Exception\n", $e;
}
// 执行后续代码
// 例子 3: 抛出自定义异常 ,使用默认异常类对象来捕获
echo '<br>', ' 例子 3:', '<br>';
try {
// 抛出自定义异常
throw new MyException('3 isnt allowed as a parameter', 6);
} catch (Exception $e) { // 捕获异常
echo "Default Exception caught\n", $e;
}
// 执行后续代码
// 例子 4
echo '<br>', ' 例子 4:', '<br>';
try {
echo 'No Exception ';
} catch (Exception $e) { // 没有异常,被忽略
echo "Default Exception caught\n", $e;
}
// 执行后续代码
网友评论