PHP中捕获捕获异常的详细示例

PHP中捕获捕获异常的详细示例
本文给出了一个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程序设计有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部