スポンサーリンク

Webアプリケーション開発

SpringBootの例外処理

投稿日:2022年2月22日 更新日:

SpringBoot初期状態の例外処理

SpringBootでは、初期状態では例外を投げるとどうなるか検証します。

下記サンプルコードをデプロイし、画面からアクセスします。

    @GetMapping("/children/register")
    public String register(Model model) {
        throw new IllegalArgumentException();
    }

Whitelabel Error Pageを表示します。
ページ下部にエラーコードが表示されます。(上画像は500エラー)

任意のエラーページを表示する

エラーコードに応じて、任意のエラーペーを表示するには、
resrouces/templates/error 配下にエラーコードごとの.htmlを作成します。

$ tree
.
├── build.gradle
└── src
    ├── main
    │   ├── java ...
    │   └── resources
    │       ├── application.yml
    │       └── templates
    │           ├── error
    │           │   ├── 400.html
    │           │   ├── 404.html
    │           │   └── 500.html

任意のエラーページを作成します。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>子どものお小遣い帳アプリ</title>
</head>
<body>
<main>
    <h1>500 エラー</h1>
    <div>予期せぬエラーが発生しました。</div>
</main>
<footer>
    <div>
        <a href="/">トップページ</a>
    </div>
</footer>
</body>
</html>

IllegalArgumentExceptionを投げて500エラーを発生させて、動作確認をします。

Whitelabel Error Pageに変わって、500エラーのページが表示されました。

存在しないURLにアクセスすると、404エラーを確認できます。

尚、エラーページのHTMLもThymeleafテンプレートが適用できます。

任意のExceptionを発生させる

Exceptionを体系づける

IlleagalArgmentExceptionなどをそのまま使っている開発チームは見たことがありません。
プロジェクト名+Exceptionをつけた独自の例外クラスを作成しています。

そこで2パターンに分かれます。

方針1.例外ごとにクラスを細かく分ける

方針2.システム例外と業務例外の2つだけ作る

これらは結局、どの粒度でクラスを分けるかというだけの話ですので、どちらでも良いです。

エラーログをパッと見たときに、
・なぜ why
・どこで where
・どんな what
エラーが発生したのか分かるようになっていれば問題ありません。

Exceptionが発生したら自画面にエラーを表示する

Udemyのハンズオン動画講座でSpringBootのスキルを磨く!

スポンサーリンク

-Webアプリケーション開発

Copyright© 【Spring Hack】 , 2022 All Rights Reserved Powered by AFFINGER5.