异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。
当异常被触发时,通常会发生:
•当前代码状态被保存
•代码执行被切换到预定义的异常处理器函数
•根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本
基本用法
<?php
function checkNum($num)
{
if ($num > 1) {
# 新建异常信息
throw new Exception("Value must be 1 or below");
}
return true;
}
try {
checkNum(3); // 触发异常
echo "如果你看到这条信息,证明num小于或等于1";
} catch (Exception $e) { // 捕获异常
echo "Message:" . $e -> getMessage(); // 显示异常信息
} finally { // 触发异常与否,都会执行
echo "<br>finally...";
}
?>
自定义Exception类
<?php
/**
* 自定义customException类继承Exception类
*/
class customException extends Exception
{
// 自定义函数返回错误信息
public function errorMessage()
{
$errMsg = "Error on line: " . $this -> getLine() . " in " . $this -> getFile()
. ": <b>" . self::getMessage() . "</b> is not a valid E-mail address";
return $errMsg;
}
}
// set_exception_handler("exception_handler"); // 设置顶层异常处理器
$email = "someone@example...com";
try {
if (filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) { // 判断是否是有效邮箱地址
throw new customException($email); // 调用自己定义的异常类
} else {
echo $email . ' is a valid address<br>';
}
} catch (customException $e) {
echo $e -> errorMessage() . "<br>";// 调用自己定义的错误提示方法提示错误信息
}
try {
if (strpos($email, "example") !== FALSE) {
throw new Exception("$email is an example E-mail");
}
} catch (Exception $e1) {
echo $e1 -> getMessage();
}
?>