Разница между операторами try-catch и if-else в PHP

Опубликовано: 17 Декабря, 2021

Попытки и уловки используются в PHP для обработки исключений, как и в других языках, таких как C ++, Java и т. Д. Исключение - это неожиданный результат или неожиданное состояние программы, которое может обрабатываться самой программой. Чтобы справиться с такими неожиданными результатами в PHP, используются методы try and catch. Дополнительные сведения см. На странице Обработка исключений в PHP.

Точно так же PHP также выполняет условные операторы, используя if и else для обработки сценариев принятия решений. Для получения дополнительной информации посетите веб-сайтPHP | Принимать решение

Различия между try-catch и if-else в PHP:

Что такое «если» и «еще» ?

  • if: он проверяет, является ли какое-либо условие «истинным» или нет, если оно истинно, то выполняет код внутри блока if.
  • else: Если условие «ложно», что проверяется блоком if , тогда блок else выполняет другой код внутри него.
 если (условие)
{......}
еще
{......}

или

if(condition)
{......}
else if(condition)
{......}
else
{......}

Что такое «попытаться» и «поймать» ?

  • try: это раздел, в котором определяется блок кода для проверки того, генерирует ли код неожиданный результат при выполнении.
  • catch: это раздел, в котором определяется другой блок кода, который выполняется, если в блоке try генерируется какой-либо неожиданный результат. Фактически этот блок кода обрабатывает исключения.
     пытаться
    {...состояние...;
     ...состояние..;
     .....;
     .....;
     .....;
    }
    улов (Исключение)
    {... обработка исключения ...;}
    

Обработка ошибок: в основном блок if-else используется для обработки ошибок с помощью проверки условий. if-else перехватывает ошибки как условное выражение. Во многих случаях существует множество угловых случаев, которые необходимо проверять во время выполнения, но «if-else» может обрабатывать только определенные условия. В if-else условия создаются вручную на основе задачи.

<?php
$g = "GeeksforGeeks" ;
// Checks for a condition if
// 'g'is null or not
if ( $g != "" ) {
echo $g ;
}
else {
echo "This is not the string" ;
}
?>

Выход:

 Компьютерщики

В случае блокировки try-catch он будет проверять сгенерированные системой ошибки или исключение во время выполнения процесса или задачи. Эти ошибки или исключения не создаются вручную. try-catch обрабатывает исключения, которые легко читаются.

<?php
// Exception handling function
function tryCatchException( $b , $var ) {
try {
echo " Divition is " , $b / $var ;
throw new Exception( 'denominator is 0' );
// If 'var' is zero then exception
// is thrown
}
// Catch block will be executed if
// any Exception has been thrown
// by try block
catch (Exception $e ) {
echo " Exception: " , $e ->getMessage();
// Print the Message passed
// by the thrown statement
}
}
// Exception will happened
tryCatchException(6, 0);
?>

Выход:

Ошибки во время выполнения: 
Предупреждение PHP: деление на ноль в 
/home/1027ff9c161eb6503f545005908318fc.php в строке 8
Разделение - это INF
Исключение: знаменатель 0 

Используйте один блок для обработки ошибок или исключения: в случае if-else у нас есть один блок else, соответствующий одному блоку if , поэтому мы должны определить каждый блок if с блоком else для обработки «ложных» условий. Также после if не может быть никаких других операторов.

<?php
function rngeLaptop( $a ) {
// Each 'if' with one 'else'
if ( $a == "Gaming" ) {
echo "Range stated from 50000rs " ;
}
else if ( $a == "Education" ) {
echo "Range stated from 25000rs " ;
}
else if ( $a == "Graphics works" ) {
echo "Range stated from 55000rs " ;
}
else if ( $a == "Entertainment" ) {
echo "Range stated from 18000rs " ;
}
else {
echo "Not listed " ;
}
}
rngeLaptop( "Gaming" );
rngeLaptop( "Education" );
rngeLaptop( "Movie" ); // Not listed
rngeLaptop( "Entertainment" );
rngeLaptop( "Graphics works" );
?>

Выход:

 Диапазон заявлен от 50000рс.
Заявленный диапазон от 25000рс.
Нет в списке
Заявленный диапазон от 18000рс.
Заявленный диапазон от 55000рс.

В случае try-catch нам не нужно определять каждую попытку с помощью catch . Внутри одной попытки может быть определено несколько исключений, и для перехвата исключений, генерируемых блоком try, может быть один блок catch.

<?php
// Exception handling function
function tryCatchException( $b , $var ) {
try {
// Checking 2 condition and throwing
// all exceptions in one catch block
if ( $var == 0) {
throw new Exception( 'denominator is 0' );
}
if ( $var < 0) {
throw new Exception( 'denominator is a negative' );
}
echo " Divition is " , $b / $var ;
}
// Catch block will be executed if any
// Exception has been thrown by try block
catch (Exception $e ) {
// Print the Message passed by
// the thrown statement
echo " Exception: " , $e ->getMessage();
}
}
// Exception will happened
tryCatchException(6, -3);
tryCatchException(12, 0);
tryCatchException(15, 3);
?>

Выход:

Исключение: знаменатель - строка
Исключение: знаменатель 0
Дивизион 5

Краткое обсуждение различий try-catch и if-else в PHP:

если еще попробуй поймать
Он проверяет, является ли любое условие истинным или нет, если оно истинно, затем выполняет код внутри блока if, в противном случае выполняет блок else. 'try' - это раздел, в котором определяется код для проверки того, генерирует ли код неожиданный результат во время выполнения, если для обработки этой ситуации выполняется какой-либо обнаруженный неожиданный результат.
if-else используется для обработки различных условий с помощью проверки условий. В случае «try-catch» система будет проверять сгенерированные системой ошибки или исключения во время выполнения процесса или задачи.
Условия создаются вручную в if-else. согласно поставленной задаче. 'try-catch' обрабатывает ошибки, сгенерированные системой, например, если массив выходит за границы, делится на ноль и т. д.
В 'if-else' условия и коды внутри блоков смешиваются, так что он становится нечитаемым, если есть много блоков 'if-else'. В «try-catch» коды для обработки исключений и того, какое исключение следует обработать, легко читаются. В if-else у нас есть один блок else, соответствующий одному блоку if. Или нам нужно определить другое условие с помощью команды else if. В «try-catch» нам не нужно определять каждый блок «try» с блоком «catch».
if-else занимает меньше времени, чем try-catch. 'try-catch' занимает больше времени, чем 'if-else'.
if-else связывают данные, предоставленные программе, и условием. «try-catch» связываются между данными с условиями и системой.