1。首先,PHP5提供了一个基本的异常处理类,可以直接使用
复制代码代码如下所示:
< PHP
类例外
{
保护信息= 'unknown美元异常; / /异常信息
受保护的$代码= 0;用户定义的异常代码
受保护的$文件;异常文件名
受保护的$行;不正常代码行号
功能__construct($消息=零,代码= 0美元);
最终的功能(这个); / /返回异常信息
最终的功能(获得按键的ASCII码); / /返回异常代码
最终的功能(建立); / /返回异常的文件名
最终的功能(函数); / /返回异常的代码行数
最终的功能(gettrace); / /回溯(阵列)
最终的功能(gettraceasstring) / /格;转化成字符串gettrace(信息)
*重载方法
功能(__tostring); / /字符串输出
}
>

简单的用法如下:(例外,抛出错误信息)
复制代码代码如下所示:
{试
我的错误错误=美元!
抛出新的异常($错误)
catch(异常E){ }
echo $ E -> GetMessage();
}

2。我们可以扩展这种类型以便于使用。
复制代码代码如下所示:
类myexception延伸例外
{
必须指定用于定义构造函数属性的消息。
公共功能__construct(美元的消息,美元代码= 0){
自定义代码
确保所有变量都被正确分配。
家长::__construct(美元的消息,美元的代码);
}
自定义字符串输出样式
公共功能__tostring(){
返回__class__。:{ $,这是:};
}
公共函数自定义函数(){
为此类异常的自定义函数;
}
}

异常处理的基本思想是,代码在try代码调用。如果Try块中发生错误,我们可以执行一个抛出一个异常处理。一些编程语言,如java,会自动把在特定情况下的例外。在PHP中,异常抛出你必须手动。可以抛出一个异常,用下面的方法:
抛出异常(消息,代码);
抛出关键字将触发异常处理机制,它是一个语言结构,而不是一个函数,但必须传递一个值给它。它需要一个对象接受。
最后,尝试代码后,你必须给至少一个catch代码块。多个catch代码块可以用try代码块关联。如果每个catch代码块可以捕获不同类型的异常,它是使用多个catch代码块有意义。例如,如果你想捕捉异常类的异常,代码如下
复制代码代码如下所示:
catch(例外E)
{
/处理异常
}
catch代码捕获的对象是导致异常的对象,并传递给抛出语句(由抛出语句抛出)。
异常类提供以下内置方法:
Getcode()返回的代码是通过构造器。
GetMessage()返回的消息传递给构造函数。
GetFile()返回的路径,产生异常的代码文件
GetLine()返回线的异常代码产生。

小心 uff1a
捕获异常时,尝试()块中的后续代码将不会继续,但会尝试查找匹配的catch代码块。
当一个异常被抛出,如果不进行捕捉处理,exception'exception'error将报告的错误
复制代码代码如下所示:
< PHP
函数测试($){
如果($>100){
抛出新的异常(提示信息:您输入的值太大;
}
}
测试(111);
>

三.当抛出异常时,catch块可以被处理或未处理。
下面是我的用户注册功能代码的一部分
复制代码代码如下所示:
尝试{
检查填写的表单
如果(!filled_out($ _post)){
抛出异常(你没有填写表格,请填写);
}
检查电子邮件地址无效
如果(!check_email($电子邮件)){
抛出异常(邮件的'incorrect格式);
}
检查密度的长度是否大于6
如果(strlen($ passwd < 6)){
抛出新的异常(密度的长度应该大于6);
}
检查密码两次等于
如果($ passwd!= $ passwd1){
抛出异常(这两个密码不同,请重新输入);
}
检查正确用户名的长度是否正确。
如果(strlen($用户名)> 16){
抛出异常(该用户名不一致,请重新输入);
}
} catch(异常E){
回声(a -> GetMessage); / /输出异常信息。
}