php数据库异常处理 php如何解决异常处理( 三 )


Throw - 这里规定如何触发异常 。每一个 “throw” 必须对应至少一个 “catch”
Catch - “catch” 代码块会捕获异常,并创建一个包含异常信息的对象
让我们触发一个异常:
?php//创建可抛出一个异常的函数function checkNum($number) { if($number1) { throw new Exception(”Value must be 1 or below”); } return true; }//在 “try” 代码块中触发异常try { checkNum(2); //If the exception is thrown, this text will not be shown echo ‘If you see this, the number is 1 or below'; }//捕获异常catch(Exception $e) { echo ‘Message: ‘ .$e-getMessage(); }?
上面代码将获得类似这样一个错误:
Message: Value must be 1 or below
例子解释:
上面的代码抛出了一个异常,并捕获了它:
创建 checkNum() 函数 。它检测数字是否大于 1 。如果是,则抛出一个异常 。
在 “try” 代码块中调用 checkNum() 函数 。
checkNum() 函数中的异常被抛出
“catch” 代码块接收到该异常,并创建一个包含异常信息的对象 ($e) 。
通过从这个 exception 对象调用 $e-getMessage(),输出来自该异常的错误消息
不过,为了遵循“每个 throw 必须对应一个 catch”的原则 , 可以设置一个顶层的异常处理器来处理漏掉的错误 。
创建一个自定义的 Exception 类
创建自定义的异常处理程序非常简单 。我们简单地创建了一个专门的类 , 当 PHP 中发生异常时,可调用其函数 。该类必须是 exception 类的一个扩展 。
这个自定义的 exception 类继承了 PHP 的 exception 类的所有属性,您可向其添加自定义的函数 。
我们开始创建 exception 类:
复制代码代码如下:
?php
class customException extends Exception {
public function errorMessage() {
//error message
$errorMsg = ‘Error on line ‘.$this-getLine().' in ‘.$this-getFile() .': b'.$this-getMessage().'/b is not a valid E-Mail address'; return $errorMsg;
}
}
$email = “someone@example…com”;try {
//check if
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {
//throw exception if email is not valid throw
new customException($email);
}
}catch (customException $e)
{
//display custom message
echo $e-errorMessage();
}?
这个新的类是旧的 exception 类的副本,外加 errorMessage() 函数 。正因为它是旧类的副本,因此它从旧类继承了属性和方法,我们可以使用 exception 类的方法,比如 getLine() 、 getFile() 以及 getMessage() 。
例子解释:
上面的代码抛出了一个异常,并通过一个自定义的 exception 类来捕获它:
customException() 类是作为旧的 exception 类的一个扩展来创建的 。这样它就继承了旧类的所有属性和方法 。
创建 errorMessage() 函数 。如果 e-mail 地址不合法,则该函数返回一条错误消息
把 $email 变量设置为不合法的 e-mail 地址字符串
执行 “try” 代码块,由于 e-mail 地址不合法 , 因此抛出一个异常
“catch” 代码块捕获异常,并显示错误消息
多个异常
可以为一段脚本使用多个异常 , 来检测多种情况 。
可以使用多个 if..else 代码块 , 或一个 switch 代码块,或者嵌套多个异常 。这些异常能够使用不同的 exception 类,并返回不同的错误消息:
复制代码代码如下:
?php
class customException extends Exception{public function errorMessage(){
//error
message$errorMsg = ‘Error on line ‘.$this-getLine().' in ‘.$this-getFile().': b'.$this-getMessage().'/b is not a valid E-Mail address';
return $errorMsg;
}
}
$email = “someone@example.com”;try {

推荐阅读