如果可以使用if Else代码而不是Everywhere,为什么要使用Exception?如果我们不在任何地方使用Exception呢?
看看我是否不想在任何地方使用exception和if Else简单条件,它可以轻松地完成我的工作,毫无疑问,那么为什么要在我的代码中的任何地方使用xception呢??
例如:异常代码
<?php
function division($num1, $num2){
//If num == 0 , throw exc
if(!$num1){
throw new Exception("Hell no !! This is Divide by 0 Exception");
}
return $num2/$num1;
}
try{
echo "Division result is : ".division(0,22);
}catch (Exception $e){
echo 'Exception msg : '.$e->getMessage();
}
但如果我不想使用try-catch等来遵循异常处理方式
无一例外
function division($num1, $num2){
$arr = array('error' => 0,'msg'=>'');
//If num == 0 , throw exc
if(!$num1){
$arr['error'] = 1;
$arr['msg'] = 'div by 0';
}
return $arr['result'] = $num2/$num1;
}
$res = division(0,22);
if($res['error']) {
echo "errr div by 0";
}else{
echo $res['result'];
}
如果我们简单地使用If Else条件和Exit(0)Or Return以及一些自定义消息及其代码,它仍然可以按预期工作。那么,为什么要在代码中使用异常呢?如果我不使用异常并使用带有返回自定义消息的条件代码,该怎么办??
使用异常(不仅在PHP中,而且在所有具有异常管理的语言中)不是强制性的,但强烈建议使用。
Oracle的人有一篇优秀的文章,其中包含了异常的一些主要优点(这是针对Java的,但想法完全相同)。
总结:
- 将错误处理代码与"常规"代码分离
- 向上传播错误到调用堆栈
- 分组和区分错误类型
就我个人而言,我使用异常只是为了惯例,尤其是在大型项目中,当代码变得难以阅读时。
当然,你也可以在没有它的情况下做同样的事情(只使用if-else语句),但我喜欢它,因为它为我的代码提供了语义,将"正常或预期的行为"与"异常情况"区分开来。
此外,当你有太多的条件需要检查时,如果你使用if-else,你也会有太多嵌套级别,使阅读和理解变得困难。
在您的具体示例中,如果我只想检查除以0,而没有其他程序员会使用我的函数,那么我可能会使用if-else。但如果我在一家公司,我肯定会使用例外情况。
如果您在询问性能开销,您真的不应该使用try/catch。try/catch是针对超出您控制范围的、不在正常程序流中的错误。如果您可以创建逻辑来处理异常,那么总是选择If/else作为其较少的处理开销。在上面的代码中,正确的方法是使用if语句而不是try/catch。引用
如果出现运行时异常,您需要处理它,以便在发生错误时程序或应用程序不会停止运行。如果您不处理它,应用程序/程序将抛出错误并停止运行。如果你是一个正在创建和分发高级软件的开发人员,你不希望这种情况发生。如果发生这样的事情,人们或普通用户会认为这是软件中的一个错误,并继续开发更好的软件。
因此,处理异常总是更好的。如果您正在使用php编写一些重要的脚本或程序,我建议您处理异常。
我明白你的意思了,你本质上是在问,既然你可以很容易地对条件检查进行同样的处理,为什么还要麻烦异常处理?在上面的例子中,你是对的,我不认为有任何特殊的需要使用异常处理,但我会给你一个需要它的场景:
目标:除以两个数字
使用if-else进行基于零的除法是非常容易和有效的,但请注意,这是一种预期的错误条件,意味着您在它发生之前就已经知道了。
目标:从文件中读取数字并进行除法
现在情况已经改变了。你仍然可以使用你的除法函数,但你如何保证你试图打开的文件是可用的?还是文件所在的磁盘仍处于连接状态?或者一百万其他的东西。因此,你可以理解为什么在这种情况下使用if/else很可能会破坏你的应用程序,除非你预料到并考虑到所有这些不同的可能性。
经验法则:
仅在特殊情况下使用异常