例外

例外リファレンス

このガイドでは、フレームワークコアと公式パッケージによって発生する既知の例外のリストを説明します。いくつかの例外は自己処理としてマークされています。自己処理例外は、HTTPレスポンスに自身を変換できます。

E_ROUTE_NOT_FOUND

この例外は、HTTPサーバーが存在しないルートに対するリクエストを受け取った場合に発生します。デフォルトでは、クライアントは404のレスポンスを受け取り、オプションでステータスページをレンダリングすることもできます。

  • ステータスコード: 404
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_ROUTE_NOT_FOUND) {
// エラーを処理する
}

E_AUTHORIZATION_FAILURE

この例外は、バウンサーの認証チェックが失敗した場合に発生します。この例外は自己処理であり、コンテンツネゴシエーションを使用してクライアントに適切なエラーレスポンスを返します。

  • ステータスコード: 403
  • 自己処理: オススメ
  • 翻訳識別子: errors.E_AUTHORIZATION_FAILURE
import { errors as bouncerErrors } from '@adonisjs/bouncer'
if (error instanceof bouncerErrors.E_AUTHORIZATION_FAILURE) {
}

E_TOO_MANY_REQUESTS

この例外は、@adonisjs/rate-limiterパッケージが指定された期間内に許可されたリクエストを使い果たした場合に発生します。この例外は自己処理であり、コンテンツネゴシエーションを使用してクライアントに適切なエラーレスポンスを返します。

  • ステータスコード: 429
  • 自己処理: オススメ
  • 翻訳識別子: errors.E_TOO_MANY_REQUESTS
import { errors as limiterErrors } from '@adonisjs/limiter'
if (error instanceof limiterErrors.E_TOO_MANY_REQUESTS) {
}

E_BAD_CSRF_TOKEN

この例外は、CSRF保護を使用しているフォームがCSRFトークンなしで送信された場合、またはCSRFトークンが無効な場合に発生します。

  • ステータスコード: 403
  • 自己処理: オススメ
  • 翻訳識別子: errors.E_BAD_CSRF_TOKEN
import { errors as shieldErrors } from '@adonisjs/shield'
if (error instanceof shieldErrors.E_BAD_CSRF_TOKEN) {
}

E_BAD_CSRF_TOKEN例外は自己処理され、ユーザーはフォームにリダイレクトされ、フラッシュメッセージを使用してエラーにアクセスできます。

@error('E_BAD_CSRF_TOKEN')
<p>{{ message }}</p>
@end

E_OAUTH_MISSING_CODE

@adonisjs/allyパッケージは、OAuthサービスがリダイレクト時にOAuthコードを提供しない場合にこの例外を発生させます。

.accessTokenまたは.userメソッドを呼び出す前に、エラーを処理することで、この例外を回避できます。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors as allyErrors } from '@adonisjs/bouncer'
if (error instanceof allyErrors.E_OAUTH_MISSING_CODE) {
}

E_OAUTH_STATE_MISMATCH

@adonisjs/allyパッケージは、リダイレクト時に定義されたCSRFステートが欠落している場合にこの例外を発生させます。

.accessTokenまたは.userメソッドを呼び出す前に、エラーを処理することで、この例外を回避できます。

  • ステータスコード: 400
  • 自己処理: できます。
import { errors as allyErrors } from '@adonisjs/bouncer'
if (error instanceof allyErrors.E_OAUTH_STATE_MISMATCH) {
}

E_UNAUTHORIZED_ACCESS

この例外は、認証ガードのいずれかがリクエストを認証できない場合に発生します。この例外は自己処理であり、コンテンツネゴシエーションを使用してクライアントに適切なエラーレスポンスを返します。

  • ステータスコード: 401
  • 自己処理: オススメ
  • 翻訳識別子: errors.E_UNAUTHORIZED_ACCESS
import { errors as authErrors } from '@adonisjs/auth'
if (error instanceof authErrors.E_UNAUTHORIZED_ACCESS) {
}

E_INVALID_CREDENTIALS

この例外は、認証ファインダーがユーザーの資格情報を検証できない場合に発生します。この例外は処理され、コンテンツネゴシエーションを使用してクライアントに適切なエラーレスポンスを返します。

  • ステータスコード: 400
  • 自己処理: オススメ
  • 翻訳識別子: errors.E_INVALID_CREDENTIALS
import { errors as authErrors } from '@adonisjs/auth'
if (error instanceof authErrors.E_INVALID_CREDENTIALS) {
}

E_CANNOT_LOOKUP_ROUTE

この例外は、URLビルダーを使用してルートのURLを作成しようとした場合に発生します。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_CANNOT_LOOKUP_ROUTE) {
// エラーを処理する
}

E_HTTP_EXCEPTION

E_HTTP_EXCEPTIONは、HTTPリクエスト中にエラーをスローするための汎用的な例外です。この例外を直接使用するか、それを拡張したカスタム例外を作成できます。

  • ステータスコード: 例外発生時に定義されます
  • 自己処理: オススメ
// タイトル: 例外をスローする
import { errors } from '@adonisjs/core'
throw errors.E_HTTP_EXCEPTION.invoke(
{
errors: ['リクエストを処理できません']
},
422
)
// タイトル: 例外を処理する
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_HTTP_EXCEPTION) {
// エラーを処理する
}

E_HTTP_REQUEST_ABORTED

E_HTTP_REQUEST_ABORTEDは、E_HTTP_EXCEPTION例外のサブクラスです。この例外は、response.abortメソッドによって発生します。

import { errors } from '@adonisjs/core'
if (error instanceof errors.E_HTTP_REQUEST_ABORTED) {
// エラーを処理する
}

E_INSECURE_APP_KEY

この例外は、appKeyの長さが16文字未満の場合に発生します。セキュアなアプリキーを生成するためにgenerateエースコマンドを使用できます。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_INSECURE_APP_KEY) {
// エラーを処理する
}

E_MISSING_APP_KEY

この例外は、config/app.tsファイル内でappKeyプロパティが定義されていない場合に発生します。デフォルトでは、appKeyの値はAPP_KEY環境変数を使用して設定されます。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_APP_KEY) {
// エラーを処理する
}

E_INVALID_ENV_VARIABLES

この例外は、1つ以上の環境変数がバリデーションに失敗した場合に発生します。詳細なバリデーションエラーは、error.helpプロパティを使用してアクセスできます。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_INVALID_ENV_VARIABLES) {
console.log(error.help)
}

E_MISSING_COMMAND_NAME

この例外は、コマンドがcommandNameプロパティを定義していないか、その値が空の文字列である場合に発生します。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_COMMAND_NAME) {
console.log(error.commandName)
}

E_COMMAND_NOT_FOUND

この例外は、Aceがコマンドを見つけることができない場合に発生します。

  • ステータスコード: 404
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_COMMAND_NOT_FOUND) {
console.log(error.commandName)
}

E_MISSING_FLAG

この例外は、必須のCLIフラグを指定せずにコマンドを実行した場合に発生します。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_FLAG) {
console.log(error.commandName)
}

E_MISSING_FLAG_VALUE

この例外は、非ブール型のCLIフラグに値を指定せずにコマンドを実行しようとした場合に発生します。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_FLAG_VALUE) {
console.log(error.commandName)
}

E_MISSING_ARG

この例外は、必須の引数を定義せずにコマンドを実行した場合に発生します。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_ARG) {
console.log(error.commandName)
}

E_MISSING_ARG_VALUE

この例外は、必須の引数に値を定義せずにコマンドを実行しようとした場合に発生します。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_ARG_VALUE) {
console.log(error.commandName)
}

E_UNKNOWN_FLAG

この例外は、未知のCLIフラグを使用してコマンドを実行した場合に発生します。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_UNKNOWN_FLAG) {
console.log(error.commandName)
}

E_INVALID_FLAG

この例外は、CLIフラグに提供された値が無効な場合に発生します。たとえば、数値を受け入れるフラグに文字列値を渡す場合などです。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_INVALID_FLAG) {
console.log(error.commandName)
}

E_MULTIPLE_REDIS_SUBSCRIPTIONS

@adonisjs/redisパッケージは、指定されたパブ/サブチャネルに購読しようとすると、この例外を発生させます。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors as redisErrors } from '@adonisjs/redis'
if (error instanceof redisErrors.E_MULTIPLE_REDIS_SUBSCRIPTIONS) {
}

E_MULTIPLE_REDIS_PSUBSCRIPTIONS

@adonisjs/redisパッケージは、指定されたパブ/サブパターンに購読しようとすると、この例外を発生させます。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors as redisErrors } from '@adonisjs/redis'
if (error instanceof redisErrors.E_MULTIPLE_REDIS_PSUBSCRIPTIONS) {
}

E_MAIL_TRANSPORT_ERROR

@adonisjs/mailパッケージは、指定されたトランスポートを使用してメールを送信できない場合にこの例外を発生させます。通常、これはメールサービスのHTTP APIが非200のHTTPレスポンスを返した場合に発生します。

error.causeプロパティを使用してネットワークリクエストエラーにアクセスできます。causeプロパティは、got(npmパッケージ)によって返されるエラーオブジェクトです。

  • ステータスコード: 400
  • 自己処理: できます。
import { errors as mailErrors } from '@adonisjs/mail'
if (error instanceof mailErrors.E_MAIL_TRANSPORT_ERROR) {
console.log(error.cause)
}

E_SESSION_NOT_MUTABLE

この例外は、セッションストアが読み取り専用モードで初期化された場合に、@adonisjs/sessionパッケージによって発生します。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors as sessionErrors } from '@adonisjs/session'
if (error instanceof sessionErrors.E_SESSION_NOT_MUTABLE) {
console.log(error.message)
}

E_SESSION_NOT_READY

この例外は、セッションストアがまだ初期化されていない場合に、@adonisjs/sessionパッケージによって発生します。これは、セッションミドルウェアを使用していない場合に発生します。

  • ステータスコード: 500
  • 自己処理: できます。
import { errors as sessionErrors } from '@adonisjs/session'
if (error instanceof sessionErrors.E_SESSION_NOT_READY) {
console.log(error.message)
}