Как сделать кастомные исключения в laravel

252
10 февраля 2019, 15:50

До сих пор полностью не понял, для чего нужны исключения и конструкции try-catch, если есть if-else? Ведь с помощью if else также можно остановить выполнение программы в нужном месте и выдать ошибку. Объясните необходимость исключений на примере laravel

Answer 1

Ну тут все просто пример с if и else

Допустим есть одна точка обработки запросов в index.php

$body = runApplication();
if($body['status'] == false ) {
   echo 'Error: ' . $body['message'];
} else {
   echo $body['body'];
}
// далее где то в runApplication есть автолод классов к примеру
// расмотрим функцию рендера главной страницы
function render() {
   if(renderBlock1) {
     return ['status' => false, 'msg' => 'error'];
   }
   if(renderBlock2) {
     return ['status' => false, 'msg' => 'error 2'];
   }
   // и т.д.
}
function renderBlock()
{
 /// какая то логика с ошибкой 
 return []; // снова обработка и ошибки и т.д.
}

А еще надо описать логику остановки приложения, и т.д. и т.п. вот именно такую логику и делают exception это некая ошибка по причине которой программа не может дальше работать. От слова 'неожиданость';

Теперь к рассмотрим пример с Exception

try {
   appRun();
} catch (Exception $error) {
   echo 'Error: ' . $error->getMessage();
}
// и теперь все что надо сделать это просто выкинуть exception
function rederBlock1 {
  // какая то логика с ошибкой
  throw new Exception('Error');
}
READ ALSO
Ресайз картинок в папке средствами php

Ресайз картинок в папке средствами php

Есть в папке множество картинокОни не квадратные

227
Не работает модуль openssl в php

Не работает модуль openssl в php

Call to undefined function openssl_encrypt()

231
перестал работать pdo execute()

перестал работать pdo execute()

После переустановки open server, перестал работать метод execute() php7

222
Вывести массив в виде строки

Вывести массив в виде строки

Данный код выводит

229