困惑,使用异常处理的try语句和用if...then...else有什么本质的区别?

javaman22 2007-06-19 01:48:43
<?php
try {
$msg = "Except!\n";
$num = 10;
if ($num < 20) {
throw new Exception($msg);
}
$foo = "bar";
} catch(Exception $e) {
print "$e->getMessage();";
}
?>


<?php
$msg = "Except!\n";
$num = 10;
if ($num < 20) {
print $msg;
}else{
$foo = "bar";
}
?>
...全文
359 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
willbetter 2007-06-19
  • 打赏
  • 举报
回复
在本质上他们是不同的,if else是控制语句,是控制代码的执行路径,try catch是捕捉异常,是在程序在极端条件下出错,所做的补救,不推荐相互代替。
Meteorlet 2007-06-19
  • 打赏
  • 举报
回复
throw的异常只能catch,你可以用if实现不用throw,但是如果系统函数或者别人写的函数或者类throw异常就只能catch。
helloyou0 2007-06-19
  • 打赏
  • 举报
回复
下面这个麻烦改写成if。。else。。。看看

try {
语句1
语句2
语句3
语句4
语句5
语句6
语句7
语句8
...
} catch (Exception1 $e) {
语句。。。
} catch (Exception2 $e) {
语句。。。
} catch (Exception3 $e) {
语句。。。
} catch (Exception4 $e) {
语句。。。
} catch (Exception5 $e) {
语句。。。
} catch (Exception6 $e) {
语句。。。
}
nexteee 2007-06-19
  • 打赏
  • 举报
回复
将if...else ...做专业封装,将其专门用于异常扑获,就成了try catch
ykanother 2007-06-19
  • 打赏
  • 举报
回复
我觉得是有的
IF ELSE 更多的运用再业务逻辑里
而Try{}Catch{}则更多的运用在合业务逻辑 但违反系统规则的场合或者说PHP和其他系统通讯的过程中
比如要INSERT一条数据到数据库 MYSQL_QUERY($INSERT_SQL)违反了某个字段的唯一约束
情况A:如果DIE('XXX') 你只知道失败
情况B:用MYSQL_INSERT_ID(); 没返回插入的ID 知道插入失败 但和DIE();效果差不多
情况C:捕获了异常返回$e.Message(); 最少通过这个Message知道你$INSERT_SQL 这个SQL命令没拼写错误,也不用ECHO $INSERT_SQL 然后跑到数据库里运行这个SQL命令了
再如文件读写 FTP上传等等符
懒得去死 2007-06-19
  • 打赏
  • 举报
回复
没有。
purplecalm 2007-06-19
  • 打赏
  • 举报
回复
do same thing by using different methods.

just like you write a program by using C and C++

if you do not use try, you should waste lots of codes on deal with the exceptions.

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧