Зачем использовать Исключение, если вместо Везде можно использовать код If Else? Что если мы нигде не будем использовать Исключение?
Просто посмотрите, не хочу ли я использовать исключение и использовать его, если везде есть простые условия, и моя работа будет выполнена легко и без сомнений, так зачем использовать исключение где-нибудь в моем коде ??
Например : Код за исключением
<?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) или Return с каким-то пользовательским сообщением и его кодом, оно все равно будет работать как положено. Так зачем использовать исключения в коде? А что если я не использую исключение и использую условный код с возвратом пользовательского сообщения ??
Использование исключений (не только в PHP, но и на всех языках с управлением исключениями) не является обязательным но настоятельно рекомендуется.
Оракулы, ребята, имеют отличный пост с некоторыми из основных Преимущества исключений (это для Java, но это точно такая же идея).
В итоге:
Лично я использую исключения только для соглашения, особенно в больших проектах, когда код становится трудным для чтения.
Конечно, вы можете сделать то же самое без него (только с операторами if-else), но мне это нравится, потому что он обеспечивает семантику для моих кодов, отделяя «нормальное или ожидаемое поведение» от «исключительных случаев».
Кроме того, если у вас слишком много условий для проверки, если вы используете if-else, у вас также будет слишком много уровней вложенности, что затруднит чтение и понимание.
В вашем конкретном примере, если бы я только хотел проверить деление на 0, и никакой другой программист не собирается использовать мою функцию, вероятно, я бы использовал if-else. Но если бы я был в компании, конечно, я бы использовал исключения.
Если вы спрашиваете о снижении производительности, вам не следует использовать try / catch. try / catch предназначен для вещей, которые не работают, которые находятся вне вашего контроля и не находятся в нормальном потоке программы. Если вы можете создать логику для обработки исключений, тогда всегда используйте if / else, так как это приводит к меньшим накладным расходам на обработку.
В приведенных выше кодах правильный подход — это оператор if, а не try / catch. Цитируется
В случае исключений во время выполнения вам необходимо обработать их так, чтобы программа или приложение не прекращали работу в случае возникновения ошибки.
Если вы не справитесь с этим, приложение / программа выдаст ошибку и прекратит работу. Вы не хотите, чтобы это произошло, если вы разработчик, который создает и распространяет программное обеспечение премиум-класса.
Если такое случается, люди или обычные пользователи считают это ошибкой в программном обеспечении и продвигаются к лучшему программному обеспечению.
Поэтому всегда лучше обрабатывать исключения. Если вы используете php для написания какого-либо важного скрипта или программы, я бы посоветовал вам обработать исключения.
Я понимаю, что вы имеете в виду, вы по существу спрашиваете, почему вы должны беспокоиться об обработке исключений, когда вы можете легко сделать то же самое с условными проверками? В приведенном выше примере вы правы, я не вижу особой необходимости использовать обработку исключений, но я дам вам сценарий, где это необходимо:
Цель: разделить два числа
Его очень легко и эффективно использовать, если еще для деления на ноль, но учтите, что это ожидаемое состояние ошибки, означающее, что вы уже знаете об этом еще до того, как оно произойдет.
Цель: прочитать числа из файла и разделить их
Сейчас ситуация изменилась. Вы по-прежнему можете использовать функцию деления, но как гарантировать доступность файла, который вы пытаетесь открыть? или диск, на котором находится файл, все еще подключен? или миллион других вещей. Таким образом, вы можете понять, почему использование if / else в таком состоянии скорее всего нарушит ваше приложение, если вы не предвидите и не учтете все эти различные возможности.
Как правило большого пальца:
Используйте исключения только для исключительных условий