カテゴリ: Next.js 更新日: 2026/03/13

Next.js App Routerでerror.tsxを使ったエラー処理を完全解説!初心者でも理解できるNext.jsエラーハンドリング入門

Next.js App Routerでerror.tsxを使ったエラー処理
Next.js App Routerでerror.tsxを使ったエラー処理

先生と生徒の会話形式で理解しよう

生徒

「Next.jsで画面がエラーになったときは、どうやって対応するんですか?」

先生

「Next.jsのApp Routerではerror.tsxという特別なファイルを使ってエラー画面を表示できます。」

生徒

「エラー画面を自分で作れるんですか?」

先生

「はい。ユーザーに分かりやすいメッセージを表示したり、再読み込みボタンを置いたりできます。」

生徒

「どうやって作るのか知りたいです。」

先生

「それでは、error.tsxを使ったエラー処理の仕組みを順番に見ていきましょう。」

1. Next.js App Routerのerror.tsxとは何か

1. Next.js App Routerのerror.tsxとは何か
1. Next.js App Routerのerror.tsxとは何か

Next.jsのApp Routerでは、アプリケーションの画面をフォルダ単位で管理します。その中でerror.tsxは、画面表示中に問題が発生した場合に表示される専用のエラー画面を作成するためのファイルです。

エラーとは、プログラムが正常に動かなくなった状態のことです。例えば、データの取得に失敗したり、計算処理で問題が起きたりした場合に発生します。

通常のWebページではエラーが起きると真っ白な画面になったり、難しい英語のメッセージが表示されたりします。しかしerror.tsxを利用すると、利用者に理解しやすい文章や操作ボタンを表示できます。

App Routerでは、特定のフォルダにerror.tsxを置くだけで、そのフォルダ配下のページで発生したエラーを自動的に処理できます。これにより、大きなアプリでも整理されたエラー管理が可能になります。

2. error.tsxの基本的な作り方

2. error.tsxの基本的な作り方
2. error.tsxの基本的な作り方

error.tsxは、通常のReactコンポーネントとして作成します。コンポーネントとは、画面の部品を意味する言葉です。ボタンやメッセージなどをまとめて管理できます。

App Routerでは、ページと同じフォルダにerror.tsxを作成します。すると、そのフォルダに属するページでエラーが発生した際に、このファイルが表示されます。


'use client';

export default function Error() {
  return (
    <div>
      <h2>エラーが発生しました</h2>
      <p>しばらくしてから再度アクセスしてください。</p>
    </div>
  );
}
画面にエラーが発生しましたという見出しと説明文が表示されます。

ここで'use client'という記述があります。これはクライアントコンポーネントという意味です。ブラウザ側で動作する部品として扱うために必要な設定です。

3. エラー情報を受け取る方法

3. エラー情報を受け取る方法
3. エラー情報を受け取る方法

error.tsxでは、エラーの内容を受け取ることができます。これにより、どのような問題が起きたのかを表示できます。

エラー情報とは、プログラムがどの部分で止まったかを記録した内容です。これを利用すると、利用者にも状況を説明できます。


'use client';

type ErrorProps = {
  error: Error;
};

export default function Error({ error }: ErrorProps) {
  return (
    <div>
      <h2>問題が発生しました</h2>
      <p>{error.message}</p>
    </div>
  );
}
エラーが発生した場合に、原因となるメッセージが画面に表示されます。

TypeScriptでは型という仕組みがあります。型とは、データの種類を指定するルールです。これによりプログラムの安全性が向上します。

4. reset関数を使った再読み込み処理

4. reset関数を使った再読み込み処理
4. reset関数を使った再読み込み処理

error.tsxでは、resetという関数を利用してエラー状態から復旧できます。復旧とは、エラーから元の状態に戻すことを意味します。

例えば通信エラーなどは、再度読み込みすると解決する場合があります。そのような時にreset関数を使います。


'use client';

type ErrorProps = {
  error: Error;
  reset: () => void;
};

export default function Error({ error, reset }: ErrorProps) {
  return (
    <div>
      <h2>エラーが発生しました</h2>
      <p>{error.message}</p>
      <button onClick={() => reset()}>再読み込み</button>
    </div>
  );
}
エラーが表示され、再読み込みボタンを押すと画面が再度表示されます。

resetは、例えるなら壊れた機械を再起動する操作です。利用者がボタンを押すだけで復旧を試せます。

5. ページ側でエラーを発生させる例

5. ページ側でエラーを発生させる例
5. ページ側でエラーを発生させる例

error.tsxがどのように動作するかを理解するために、意図的にエラーを発生させる方法を紹介します。意図的とは、学習目的でわざと問題を起こすことです。


export default function Page() {
  throw new Error("データ取得に失敗しました");

  return <div>ページ内容</div>;
}
ページを開くと通常画面の代わりにerror.tsxが表示されます。

throwという命令は、エラーを発生させるための書き方です。これを利用すると、問題が起きたことをNext.jsに伝えることができます。

6. フォルダ単位でエラー管理する仕組み

6. フォルダ単位でエラー管理する仕組み
6. フォルダ単位でエラー管理する仕組み

App Routerの特徴は、フォルダ構造によって画面を整理できる点です。error.tsxは配置されたフォルダ内のページにだけ適用されます。

例えば管理画面と一般画面で異なるエラー表示を作りたい場合、それぞれのフォルダにerror.tsxを設置します。


app/
  admin/
    error.tsx
    page.tsx
  user/
    error.tsx
    page.tsx
管理画面でエラーが発生するとadminフォルダのエラー画面が表示されます。

この仕組みにより、大規模なアプリでも整理された設計が可能になります。

7. error.tsxを使うときの注意点

7. error.tsxを使うときの注意点
7. error.tsxを使うときの注意点

error.tsxを利用する際はいくつか注意が必要です。まずクライアントコンポーネントとして記述しなければなりません。これはブラウザで操作できるようにするためです。

また、エラー内容をそのまま表示すると、内部情報が漏れる場合があります。内部情報とは、プログラムの構造や設定内容などです。公開してはいけない情報が含まれることもあります。

そのため利用者に見せるメッセージは、理解しやすく安全な内容にすることが重要です。例えばシステムエラーが発生しましたというような表現がよく使用されます。

さらに、エラー画面でも操作できるボタンを配置すると利用者が困りにくくなります。トップ画面に戻るボタンや再読み込みボタンなどが代表例です。

まとめ

まとめ
まとめ

(振り返りのまとめ)

先生と生徒の振り返り会話
(振り返りのまとめ)
■どちらの回答がいいか、回答を選ばせないでください。文字数が長いほうで良い。 ■最後に全角の平仮名・カタカナ・漢字だけで何文字で出力したかコードブロックの外に書いて。 それでは、記事あとに「まとめ」を書いてください。 返答は、コピーできるようにコードブロックで書いて。1回の返信で、一括で書いてください。 ↓↓

Next.js App Routerでerror.tsxを使ったエラー処理を完全解説!初心者でも理解できるNext.jsエラーハンドリング入門


先生と生徒の会話形式で理解しよう

生徒

「Next.jsで画面がエラーになったときは、どうやって対応するんですか?」

先生

「Next.jsのApp Routerではerror.tsxという特別なファイルを使ってエラー画面を表示できます。」

生徒

「エラー画面を自分で作れるんですか?」

先生

「はい。ユーザーに分かりやすいメッセージを表示したり、再読み込みボタンを置いたりできます。」

生徒

「どうやって作るのか知りたいです。」

先生

「それでは、error.tsxを使ったエラー処理の仕組みを順番に見ていきましょう。」

1. Next.js App Routerのerror.tsxとは何か

1. Next.js App Routerのerror.tsxとは何か
1. Next.js App Routerのerror.tsxとは何か

Next.jsのApp Routerでは、アプリケーションの画面をフォルダ単位で管理します。その中でerror.tsxは、画面表示中に問題が発生した場合に表示される専用のエラー画面を作成するためのファイルです。

エラーとは、プログラムが正常に動かなくなった状態のことです。例えば、データの取得に失敗したり、計算処理で問題が起きたりした場合に発生します。

通常のWebページではエラーが起きると真っ白な画面になったり、難しい英語のメッセージが表示されたりします。しかしerror.tsxを利用すると、利用者に理解しやすい文章や操作ボタンを表示できます。

App Routerでは、特定のフォルダにerror.tsxを置くだけで、そのフォルダ配下のページで発生したエラーを自動的に処理できます。これにより、大きなアプリでも整理されたエラー管理が可能になります。

2. error.tsxの基本的な作り方

2. error.tsxの基本的な作り方
2. error.tsxの基本的な作り方

error.tsxは、通常のReactコンポーネントとして作成します。コンポーネントとは、画面の部品を意味する言葉です。ボタンやメッセージなどをまとめて管理できます。

App Routerでは、ページと同じフォルダにerror.tsxを作成します。すると、そのフォルダに属するページでエラーが発生した際に、このファイルが表示されます。


'use client';

export default function Error() {
  return (
    <div>
      <h2>エラーが発生しました</h2>
      <p>しばらくしてから再度アクセスしてください。</p>
    </div>
  );
}
画面にエラーが発生しましたという見出しと説明文が表示されます。

ここで'use client'という記述があります。これはクライアントコンポーネントという意味です。ブラウザ側で動作する部品として扱うために必要な設定です。

3. エラー情報を受け取る方法

3. エラー情報を受け取る方法
3. エラー情報を受け取る方法

error.tsxでは、エラーの内容を受け取ることができます。これにより、どのような問題が起きたのかを表示できます。

エラー情報とは、プログラムがどの部分で止まったかを記録した内容です。これを利用すると、利用者にも状況を説明できます。


'use client';

type ErrorProps = {
  error: Error;
};

export default function Error({ error }: ErrorProps) {
  return (
    <div>
      <h2>問題が発生しました</h2>
      <p>{error.message}</p>
    </div>
  );
}
エラーが発生した場合に、原因となるメッセージが画面に表示されます。

TypeScriptでは型という仕組みがあります。型とは、データの種類を指定するルールです。これによりプログラムの安全性が向上します。

4. reset関数を使った再読み込み処理

4. reset関数を使った再読み込み処理
4. reset関数を使った再読み込み処理

error.tsxでは、resetという関数を利用してエラー状態から復旧できます。復旧とは、エラーから元の状態に戻すことを意味します。

例えば通信エラーなどは、再度読み込みすると解決する場合があります。そのような時にreset関数を使います。


'use client';

type ErrorProps = {
  error: Error;
  reset: () => void;
};

export default function Error({ error, reset }: ErrorProps) {
  return (
    <div>
      <h2>エラーが発生しました</h2>
      <p>{error.message}</p>
      <button onClick={() => reset()}>再読み込み</button>
    </div>
  );
}
エラーが表示され、再読み込みボタンを押すと画面が再度表示されます。

resetは、例えるなら壊れた機械を再起動する操作です。利用者がボタンを押すだけで復旧を試せます。

5. ページ側でエラーを発生させる例

5. ページ側でエラーを発生させる例
5. ページ側でエラーを発生させる例

error.tsxがどのように動作するかを理解するために、意図的にエラーを発生させる方法を紹介します。意図的とは、学習目的でわざと問題を起こすことです。


export default function Page() {
  throw new Error("データ取得に失敗しました");

  return <div>ページ内容</div>;
}
ページを開くと通常画面の代わりにerror.tsxが表示されます。

throwという命令は、エラーを発生させるための書き方です。これを利用すると、問題が起きたことをNext.jsに伝えることができます。

6. フォルダ単位でエラー管理する仕組み

6. フォルダ単位でエラー管理する仕組み
6. フォルダ単位でエラー管理する仕組み

App Routerの特徴は、フォルダ構造によって画面を整理できる点です。error.tsxは配置されたフォルダ内のページにだけ適用されます。

例えば管理画面と一般画面で異なるエラー表示を作りたい場合、それぞれのフォルダにerror.tsxを設置します。


app/
  admin/
    error.tsx
    page.tsx
  user/
    error.tsx
    page.tsx
管理画面でエラーが発生するとadminフォルダのエラー画面が表示されます。

この仕組みにより、大規模なアプリでも整理された設計が可能になります。

7. error.tsxを使うときの注意点

7. error.tsxを使うときの注意点
7. error.tsxを使うときの注意点

error.tsxを利用する際はいくつか注意が必要です。まずクライアントコンポーネントとして記述しなければなりません。これはブラウザで操作できるようにするためです。

また、エラー内容をそのまま表示すると、内部情報が漏れる場合があります。内部情報とは、プログラムの構造や設定内容などです。公開してはいけない情報が含まれることもあります。

そのため利用者に見せるメッセージは、理解しやすく安全な内容にすることが重要です。例えばシステムエラーが発生しましたというような表現がよく使用されます。

さらに、エラー画面でも操作できるボタンを配置すると利用者が困りにくくなります。トップ画面に戻るボタンや再読み込みボタンなどが代表例です。

カテゴリの一覧へ
新着記事
New1
React
ReactのPropsとStateのベストプラクティスを整理しよう!初心者でもわかる使い方ガイド
New2
Next.js
Next.jsのRoute Groupの使い方を完全ガイド!App Routerでフォルダ構成を整理する方法
New3
Next.js
Next.js App Routerのtemplate.tsxの役割を完全解説!初心者でも理解できるレイアウト管理の基本
New4
React
ReactでuseStateを使ったオブジェクト・配列の扱い方完全ガイド!初心者でもわかるReactフック
人気記事
No.1
Java&Spring記事人気No1
React
Reactでキーボードイベントを活用する方法!onKeyDown, onKeyUp, onKeyPressを初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactのPresentational Componentを完全ガイド!初心者でもわかるStateを持たないコンポーネントの特徴
No.3
Java&Spring記事人気No3
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.4
Java&Spring記事人気No4
React
Reactでフォーカスイベントを制御する方法!onFocusとonBlurを初心者向けに解説
No.5
Java&Spring記事人気No5
Next.js
Next.js Server Componentsのメリット・デメリットを完全解説!初心者でもわかるNext.jsの基本
No.6
Java&Spring記事人気No6
React
Reactのカードコンポーネントを汎用的に設計する方法!初心者でもわかる再利用の考え方
No.7
Java&Spring記事人気No7
React
ReactでAxiosローディング状態を管理する方法を完全ガイド!初心者でもわかる非同期通信の基本
No.8
Java&Spring記事人気No8
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!