本文给出了一个PHP捕获捕获异常的例子,供您
参考,具体
方法如下:
php中的catch可以帮助我们捕捉
程序代码的异常,这样我们可以很好地
处理一些不必要的
错误。感兴趣的朋友可以一起看看。
PHP中尝试{ } } catch语句概述
PHP5添加异常处理模块类似于其他
语言,PHP代码生成异常可以抛出由catch语句的语句了。(注:它必须被首先得到)
需要异常处理的代码必须放在试用代码块中,以捕获可能的异常。
每个尝试应该至少有一个对应的catch。
使用多个catch可以捕获不同类生成的异常。
当尝试代码块不再抛出异常或与catch抛出的异常匹配时,PHP代码将在跳转到最后一个catch之后继续
执行。
当然,PHP允许在catch代码块中抛出(抛出)异常。
当抛出异常时,代码将不会继续执行。然后PHP会尝试寻找第一个可以匹配的catch。
如果是一个例外,没有捕获和处理set_exception_handler(),那么PHP将产生一个严重的错误和输出
提示信息未捕获的异常…
首先看看PHP内置异常类的基本
属性和方法(不包括具体实现)。
复制代码代码如下:{
}
catch(){
抛出新的异常();
}
catch(){
在这里可以捕获上一个块抛出的异常
}
处理异常,我们需要使用try { } { }赶上----在PHP包括try语句和至少一个catch声明任何代码调用一个方法可能抛出异常,应使用try语句。语句是用来处理可能抛出的异常。以下表明我们处理抛出的异常getcommandobject方式():
复制代码代码如下:< PHP
{试
$经理=新CommandManager. RequerySuggested();
CMD =美元美元经理-> getcommandobject(realcommand );
命令执行();
catch(异常E){ }
打印a -> GetMessage();
出口();
}
>
您可以看到,通过在PHP中组合抛出关键字和尝试{ } catch },我们可以避免标记污染类方法返回的值的错误。因为异常本身是PHP中构建的
类型,它与其他对象不同,没有混淆。
如果抛出异常,则尝试语句中的
脚本将停止执行,然后立即转到catch语句中的脚本。
例子如下:
包含
文件错误抛出异常
复制代码代码如下:< PHP
错误演示
{试
要求('test_try_catch。php);
catch(异常E){ }
echo $ E -> GetMessage();
}
右/异常
{试
如果(file_exists('test_try_catch。php)){
要求('test_try_catch。php);
{人}
抛出异常(文件不存在);
}
catch(异常E){ }
echo $ E -> GetMessage();
}
如果抛出异常且未捕获,将生成致命错误。
多捕获捕获多个异常
PHP将
查询匹配的catch代码块,如果有多个catch代码块,对象传递给每个catch代码块必须有不同的类型,因此,PHP可以找到catch代码块进入。当try代码块不再抛出一个异常或不匹配被捕获异常,这PHP代码将继续执行的最后一个catch后,多异常捕获的例子如下:
复制代码代码如下:< PHP
类myexception延伸例外{
必须指定第一个重/ 将构造
函数参数消息定义为属性。
公共
功能__construct(美元的消息,美元代码= 0){
可以在这里定义它们的一些代码
在同一时间,调用父函数::构建/建议()
检查所有变量是否已分配
家长::__construct(美元的消息,美元的代码);
}
从父类继承的方法/重写自定义字符串输出样式
公共功能__tostring(){
返回__class__。$。}。;
}
这是一种自定义/异常
处理方法。
公共函数自定义函数(){
在自定义方法中处理这种类型的异常。
}
}
/ /为测试
创建自定义异常类myexception延伸
类testexception {
公共$ var;用于判断对象属性成员是否创建成功。
功能__construct($值= 0){ / /价值的施工方法决定抛出异常
选择性判断传入值的开关($)
案例1:混合参数1,异常对象被抛出自定义
把新的myexception(
输入值1是一个无效的参数
案例2:2参数,异常对象是用PHP抛出的
把新的myexception(输入值2不能作为一个参数
默认情况下:参数不合法,引发异常。
$这个属性赋值成员的对象
}
}
}
例如,1,无一例外地,正常的程序执行,尝试所有的代码执行没有执行任何catch块。
尝试{
testobj美元=新(testexception); / /使用默认参数创建异常的擦拭物
死亡
笔记;没有异常,此语句将被执行。
} catch(myexception e){ / /捕获
用户定义的异常块
异常捕获自定义回声$ ;通过自定义输出异常消息
(a ->自定义函数); / /异常处理方法可称为自定义
}捕获(异常E)捕获内置的异常处理对象。
赶上默认回声:e -> GetMessage。();输出异常消息
}
var_dump($ testobj); / /判断对象是否创建成功,无任何异常,是创建成功
例如,2、自定义的异常和自定义异常类,并捕获异常处理。
尝试{
testobj1美元=新testexception(1); / / 1,抛出自定义异常
死亡笔记;
} catch(myexception e){ / /这个catch块的代码将被执行
捕获自定义异常:$ ;
$ E ->自定义函数();
} catch(异常$ e){此catch块不执行
回声捕捉默认例外:。a -> GetMessage()。
}
var_dump($ testobj1); / /异常,这个对象没有成功创建
例2,内置的异常,通过自定义异常类来捕获异常和处理
尝试{
testobj2美元=新testexception(2); / /
介绍2、内置异常抛出
死亡笔记;
} catch(myexception e){ / /这个catch块的代码将被执行
捕获自定义异常:$ ;
$ E ->自定义函数();
} catch(异常$ e){此catch块不执行
回声捕捉默认例外:。a -> GetMessage()。
}
var_dump($ testobj2); / /异常,这个对象没有成功创建
>
在上面的代码中,您可以使用两个异常处理类:一个是自定义的异常处理类myexception,另一个是异常处理类例外内置PHP。Try块中,我们创建了该块的测试类testexception对象,并根据施工方法提供不同的数字参数,我们抛出的自定义异常类对象,内置的异常类的对象而不抛出任何异常,并跳转到对应的catch块执行。如果没有异常发生,它不会在任何的catch块执行和测试类testexception对象创建成功
希望本文能对大家的PHP程序设计有所帮助。