Cet article traite en profondeur de la fonction critique mais rarement mentionnée dans le cadre de Laravel - manipulation des exceptions. Le gestionnaire d'exceptions intégré de Laravel peut facilement et faire des exceptions conviviales.
La première moitié de l'article explorera les paramètres par défaut du gestionnaire d'exceptions et analysera en détail la classe de gestionnaire par défaut pour comprendre comment Laravel gère les exceptions.
La seconde moitié montrera comment créer un gestionnaire d'exceptions personnalisés pour attraper des exceptions personnalisées.
Avant d'entrer directement dans la classe du gestionnaire, comprenons d'abord quelques paramètres de configuration de clé liés aux exceptions.
Ouvrez le fichier config / app.php et vérifiez soigneusement l'extrait de code suivant:
<code>...<br>/*<br>|--------------------------------------------------------------------------<br>| 应用调试模式<br>|--------------------------------------------------------------------------<br>|<br>| 当应用程序处于调试模式时,将显示包含堆栈跟踪的详细错误消息,<br>| 这些消息与应用程序中发生的每个错误相关联。如果禁用,则显示<br>| 一个简单的通用错误页面。<br>|<br>*/<br><br>'debug' => (bool) env('APP_DEBUG', false),<br>...<br>...<br></code>
Comme le nom l'indique, s'il est défini sur true, les informations d'erreur détaillées et la trace de pile seront affichées; si vous êtes défini sur FALSE, seule une page d'erreur commune sera affichée.
Ensuite, jetons un coup d'œil à la méthode de rapport par défaut, qui est utilisée pour enregistrer les erreurs dans un fichier journal. Dans le même temps, il est important de faire attention à la méthode de rendu, et bien sûr, vous pouvez également personnaliser la méthode de rapport.
Comme vous pouvez le voir, nous utilisons ce qui suit dans le fichier app / exceptions / handler.php pour rediriger l'utilisateur vers la méthode de rendu:
<code>/**<br> * 将异常渲染为 HTTP 响应。<br> *<br> * @param \Illuminate\Http\Request $request<br> * @param \Throwable $exception<br> * @return \Symfony\Component\HttpFoundation\Response<br> *<br> * @throws \Throwable<br> */<br>public function render($request, Throwable $exception)<br>{<br> if ($exception instanceof \App\Exceptions\CustomException) {<br> return $exception->render($request);<br> }<br><br> return parent::render($request, $exception);<br>}<br></code>
Comme vous pouvez le voir, nous vérifions d'abord le type de l'exception dans la méthode de rendu. Si le type d'exception est CustomException
, la méthode de rendu de la classe est appelée.
CustomException
classe Tout est prêt maintenant. Ensuite, créons un fichier de contrôleur dans app / http / contrôlers / exceptionController.php pour tester notre classe d'exception personnalisée.
<code><?php <br>namespace App\Http\Controllers;<br><br>use App\Http\Controllers\Controller;<br><br>class ExceptionController extends Controller<br>{<br> public function index()<br> {<br> // 出现错误,您想抛出 CustomException<br> throw new \App\Exceptions\CustomException('出现错误。');<br> }<br>}<br></code>
Bien sûr, vous devez ajouter la route associée dans Routes / web.php comme indiqué ci-dessous:
<code>// 异常路由<br>Route::get('exception/index', 'ExceptionController@index');<br></code>
avec cela, vous pouvez visiter le https://www.php.cn/link/acf7e77a5936a316105ce94cee522f5d URL pour voir si cela fonctionne comme prévu. Il doit afficher la vue errors.custom
en fonction de notre configuration.
Voici comment gérer les exceptions personnalisées dans Laravel.
Aujourd'hui, nous avons appris la fonction de gestion des exceptions à Laravel. Au début de l'article, nous explorons la configuration de base fournie par Laravel pour rendre et signaler des exceptions. De plus, nous comprenons brièvement la classe de gestionnaire d'exceptions par défaut.
Dans la seconde moitié de l'article, nous avons préparé une classe de gestionnaire d'exception personnalisée qui montre comment gérer les exceptions personnalisées dans l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!