PHP TRY CATCH具体求解 10
我本来理解的trycatch的意思是:试着去执行try里面的代码,如果发现异常,则通过catch给出信息,否则跳过执行后面的代码,,,但我简单测试了一下:不是这么一回事啊...
我本来理解的try catch的意思是: 试着去执行try里面的代码,如果发现异常,则通过catch给出信息,否则跳过执行后面的代码,,,但我简单测试了一下: 不是这么一回事啊!!!所以求具体解答,,,随便复制过来的就不要弄了,虽然没分了,但还是很想有朋友帮忙解答一下,,,谢谢!!!
我好比这样测试一下这个:
try{
mysql_connect('localhoat','user','user');
}catch(Exception $e){
throw new Exception('连接失败');
}
也许是我理解上错误吧,因为我发现即使try里面可以正确连接到数据库,但还是会抛出错误信息,如果没连接上也会抛出错误信息...
想知道具体怎么个用法?手册我也看过了 问题是我测试就会有我上面这事发生,,, 展开
我好比这样测试一下这个:
try{
mysql_connect('localhoat','user','user');
}catch(Exception $e){
throw new Exception('连接失败');
}
也许是我理解上错误吧,因为我发现即使try里面可以正确连接到数据库,但还是会抛出错误信息,如果没连接上也会抛出错误信息...
想知道具体怎么个用法?手册我也看过了 问题是我测试就会有我上面这事发生,,, 展开
3个回答
展开全部
php的try catch与其它语言的try catch相比有许多不同,而且用起来相对比较不爽。
php中,如果你制作的站点相对较大,同时模块化,并且在错误处理机制上有一套自己的处理机制,可以尝试使用try catch,否则,可以考虑不使用它。
PHP的try catch是捕获异常,但它却无法捕获PHP的内部异常,必须是经过throw语句抛出的异常,它才能正常捕获,这也意味着,如果你的try代码块中,没有任何throw语句,或者包含了throw语句的函数,那么,try catch语句就是废品,嘛用没有。
但是,在大型网站的构建中,用于建设一套自己的自定义错误处理机制,try catch就显现出了它的强大,比如,我在构建一个几乎整站都会用到的一个公用函数,在这个函数里,我做了大量可能出现的错误判断,并将错误throw,那么在我后面引用这个函数的时候,就可以对其try,并在其catch中对该错误进行判断并做针对性处理。
下面的这做代码:
function glo(num){
if(is_int(num)){
echo '输入正确';
}else{
throw new Exception('传值类型错误!');
}
}
那么以后我一旦调用这个函数,但是传入的值类型不正确的时候,就会出现异常:
glo("str");
这时候如果使用try catch,就可以捕获这个异常
try{
glo("str");
}catch($e){
echo $e->getMessage();
}
__
当然,以上的代码仅为示例,看起来好像用了try catch还不如不用来得方便,但是到了大型系统中,这样的机制如果用得有效,则会起到不错的效果。
————
catch里不能throw
php中,如果你制作的站点相对较大,同时模块化,并且在错误处理机制上有一套自己的处理机制,可以尝试使用try catch,否则,可以考虑不使用它。
PHP的try catch是捕获异常,但它却无法捕获PHP的内部异常,必须是经过throw语句抛出的异常,它才能正常捕获,这也意味着,如果你的try代码块中,没有任何throw语句,或者包含了throw语句的函数,那么,try catch语句就是废品,嘛用没有。
但是,在大型网站的构建中,用于建设一套自己的自定义错误处理机制,try catch就显现出了它的强大,比如,我在构建一个几乎整站都会用到的一个公用函数,在这个函数里,我做了大量可能出现的错误判断,并将错误throw,那么在我后面引用这个函数的时候,就可以对其try,并在其catch中对该错误进行判断并做针对性处理。
下面的这做代码:
function glo(num){
if(is_int(num)){
echo '输入正确';
}else{
throw new Exception('传值类型错误!');
}
}
那么以后我一旦调用这个函数,但是传入的值类型不正确的时候,就会出现异常:
glo("str");
这时候如果使用try catch,就可以捕获这个异常
try{
glo("str");
}catch($e){
echo $e->getMessage();
}
__
当然,以上的代码仅为示例,看起来好像用了try catch还不如不用来得方便,但是到了大型系统中,这样的机制如果用得有效,则会起到不错的效果。
————
catch里不能throw
展开全部
其实你的理解是对的,但是有一点你没注意到,那就是:因为PHP是后来才加入异常这个功能的,而之前的很多基础类库并没有做抛出异常异常,所以需要手动抛出。
比如:
<?php
function test($a){
if($a<5){
throw new Exception('error ...........');
}
}
try {
test(3);
} catch(Exception $e) {
echo $e->getMessage();
}
?>
比如:
<?php
function test($a){
if($a<5){
throw new Exception('error ...........');
}
}
try {
test(3);
} catch(Exception $e) {
echo $e->getMessage();
}
?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询