Referência de exceções
Neste guia, examinaremos a lista de exceções conhecidas geradas pelo núcleo do framework e pelos pacotes oficiais. Algumas das exceções são marcadas como automanipuladas. Exceções automanipuladas podem se converter em uma resposta HTTP.
E_ROUTE_NOT_FOUND
A exceção é gerada quando o servidor HTTP recebe uma solicitação para uma rota inexistente. Por padrão, o cliente receberá uma resposta 404 e, opcionalmente, você pode renderizar uma página HTML usando páginas de status.
- Código de status: 404
- Autogerenciado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_ROUTE_NOT_FOUND) {
// lidar com erro
}
E_ROW_NOT_FOUND
A exceção é gerada quando a consulta ao banco de dados para encontrar um item falha [por exemplo, ao usar Model.findOrFail()
]. Por padrão, o cliente receberá uma resposta 404 e, opcionalmente, você pode renderizar uma página HTML usando páginas de status.
- Código de status: 404
- Autogerenciado: Não
import { errors as lucidErrors } from '@adonisjs/lucid'
if (error instanceof lucidErrors.E_ROW_NOT_FOUND) {
// lidar com erro
console.log(`${error.model?.name || 'Row'} not found`)
}
E_AUTHORIZATION_FAILURE
A exceção é gerada quando uma verificação de autorização do bouncer falha. A exceção é autogerenciada e usa negociação de conteúdo para retornar uma resposta de erro apropriada ao cliente.
- Código de status: 403
- Autogerenciado: Sim
- Identificador de tradução:
errors.E_AUTHORIZATION_FAILURE
import { errors as bouncerErrors } from '@adonisjs/bouncer'
if (error instanceof bouncerErrors.E_AUTHORIZATION_FAILURE) {
}
E_TOO_MANY_REQUESTS
A exceção é gerada pelo pacote @adonisjs/rate-limiter quando uma solicitação esgota todas as solicitações permitidas durante uma duração determinada. A exceção é autogerenciada e usa negociação de conteúdo para retornar uma resposta de erro apropriada ao cliente.
- Código de status: 429
- Automanipulado: Sim
- Identificador de tradução:
errors.E_TOO_MANY_REQUESTS
import { errors as limiterErrors } from '@adonisjs/limiter'
if (error instanceof limiterErrors.E_TOO_MANY_REQUESTS) {
}
E_BAD_CSRF_TOKEN
A exceção é gerada quando um formulário usando proteção CSRF é enviado sem o token CSRF, ou o token CSRF é inválido.
- Código de status: 403
- Automanipulado: Sim
- Identificador de tradução:
errors.E_BAD_CSRF_TOKEN
import { errors as shieldErrors } from '@adonisjs/shield'
if (error instanceof shieldErrors.E_BAD_CSRF_TOKEN) {
}
A exceção E_BAD_CSRF_TOKEN
é automanipulada, e o usuário será redirecionado de volta ao formulário, e você pode acessar o erro usando as mensagens flash.
@error('E_BAD_CSRF_TOKEN')
<p>{{ message }}</p>
@end
E_OAUTH_MISSING_CODE
O pacote @adonisjs/ally
gera a exceção quando o serviço OAuth não fornece o código OAuth durante o redirecionamento.
Você pode evitar essa exceção se lidar com os erros antes de chamar os métodos .accessToken
ou .user
.
- Código de status: 500
- Automanipulado: Não
import { errors as allyErrors } from '@adonisjs/bouncer'
if (error instanceof allyErrors.E_OAUTH_MISSING_CODE) {
}
E_OAUTH_STATE_MISMATCH
O pacote @adonisjs/ally
gera a exceção quando o estado CSRF definido durante o redirecionamento está ausente.
Você pode evitar essa exceção se lidar com os erros antes de chamar os métodos .accessToken
ou .user
.
- Código de status: 400
- Automanipulado: Não
import { errors as allyErrors } from '@adonisjs/bouncer'
if (error instanceof allyErrors.E_OAUTH_STATE_MISMATCH) {
}
E_UNAUTHORIZED_ACCESS
A exceção é gerada quando um dos guardas de autenticação não consegue autenticar a solicitação. A exceção é automanipulada e usa content-negotiation para retornar uma resposta de erro apropriada ao cliente.
- Código de status: 401
- Automanipulado: Sim
- Identificador de tradução:
errors.E_UNAUTHORIZED_ACCESS
import { errors as authErrors } from '@adonisjs/auth'
if (error instanceof authErrors.E_UNAUTHORIZED_ACCESS) {
}
E_INVALID_CREDENTIALS
A exceção é gerada quando o localizador de autenticação não consegue verificar as credenciais do usuário. A exceção é manipulada e use content-negotiation para retornar uma resposta de erro apropriada ao cliente.
- Código de status: 400
- Automanipulado: Sim
- Identificador de tradução:
errors.E_INVALID_CREDENTIALS
import { errors as authErrors } from '@adonisjs/auth'
if (error instanceof authErrors.E_INVALID_CREDENTIALS) {
}
E_CANNOT_LOOKUP_ROUTE
A exceção é gerada quando você tenta criar uma URL para uma rota usando o URL builder.
- Código de status: 500
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_CANNOT_LOOKUP_ROUTE) {
// lidar com erro
}
E_HTTP_EXCEPTION
A E_HTTP_EXCEPTION
é uma exceção genérica para gerar erros durante uma solicitação HTTP. Você pode usar essa exceção diretamente ou criar uma exceção personalizada estendendo-a.
- Código de status: Definido no momento da geração da exceção
- Autogerenciado: Sim
// Throw exception
import { errors } from '@adonisjs/core'
throw errors.E_HTTP_EXCEPTION.invoke(
{
errors: ['Cannot process request']
},
422
)
// Handle exception
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_HTTP_EXCEPTION) {
// lidar com erro
}
E_HTTP_REQUEST_ABORTED
A E_HTTP_REQUEST_ABORTED
é uma subclasse da exceção E_HTTP_EXCEPTION
. Essa exceção é gerada pelo método response.abort.
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_HTTP_REQUEST_ABORTED) {
// lidar com erro
}
E_INSECURE_APP_KEY
A exceção é gerada quando o comprimento de appKey
é menor que 16 caracteres. Você pode usar o comando ace generate:key para gerar uma chave de aplicativo segura.
- Código de status: 500
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_INSECURE_APP_KEY) {
// lidar com erro
}
E_MISSING_APP_KEY
A exceção é gerada quando a propriedade appKey
não é definida dentro do arquivo config/app.ts
. Por padrão, o valor de appKey
é definido usando a variável de ambiente APP_KEY
.
- Código de status: 500
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_APP_KEY) {
// lidar com erro
}
E_INVALID_ENV_VARIABLES
A exceção é gerada quando uma ou mais variáveis de ambiente falham na validação. Os erros de validação detalhados podem ser acessados usando a propriedade error.help
.
- Código de status: 500
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_INVALID_ENV_VARIABLES) {
console.log(error.help)
}
E_MISSING_COMMAND_NAME
A exceção é gerada quando um comando não define a propriedade commandName
ou seu valor é uma string vazia.
- Código de status: 500
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_COMMAND_NAME) {
console.log(error.commandName)
}
E_COMMAND_NOT_FOUND
A exceção é gerada pelo Ace quando não é possível encontrar um comando.
- Código de status: 404
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_COMMAND_NOT_FOUND) {
console.log(error.commandName)
}
E_MISSING_FLAG
A exceção é gerada ao executar um comando sem passar um sinalizador CLI necessário.
- Código de status: 500
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_FLAG) {
console.log(error.commandName)
}
E_MISSING_FLAG_VALUE
A exceção é gerada ao tentar executar um comando sem fornecer nenhum valor para um sinalizador CLI não booleano.
- Código de status: 500
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_FLAG_VALUE) {
console.log(error.commandName)
}
E_MISSING_ARG
A exceção é gerada ao executar um comando sem definir os argumentos necessários.
- Código de status: 500
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_ARG) {
console.log(error.commandName)
}
E_MISSING_ARG_VALUE
A exceção é gerada ao executar um comando sem definir o valor para um argumento obrigatório.
- Código de status: 500
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_MISSING_ARG_VALUE) {
console.log(error.commandName)
}
E_UNKNOWN_FLAG
A exceção é gerada ao executar um comando com um sinalizador CLI desconhecido.
- Código de status: 500
- Automanipulado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_UNKNOWN_FLAG) {
console.log(error.commandName)
}
E_INVALID_FLAG
A exceção é gerada quando o valor fornecido para um sinalizador CLI é inválido — por exemplo, passar um valor de string para um sinalizador que aceita valores numéricos.
- Código de status: 500
- Autogerenciado: Não
import { errors } from '@adonisjs/core'
if (error instanceof errors.E_INVALID_FLAG) {
console.log(error.commandName)
}
E_MULTIPLE_REDIS_SUBSCRIPTIONS
O pacote @adonisjs/redis
gera a exceção quando você tenta inscrever-se em um determinado canal pub/sub várias vezes.
- Código de status: 500
- Autogerenciado: Não
import { errors as redisErrors } from '@adonisjs/redis'
if (error instanceof redisErrors.E_MULTIPLE_REDIS_SUBSCRIPTIONS) {
}
E_MULTIPLE_REDIS_PSUBSCRIPTIONS
O pacote @adonisjs/redis
gera a exceção quando você tenta inscrever-se em um determinado padrão pub/sub várias vezes.
- Código de status: 500
- Automanipulado: Não
import { errors as redisErrors } from '@adonisjs/redis'
if (error instanceof redisErrors.E_MULTIPLE_REDIS_PSUBSCRIPTIONS) {
}
E_MAIL_TRANSPORT_ERROR
A exceção é gerada pelo pacote @adonisjs/mail
quando não é possível enviar o e-mail usando um determinado transporte. Normalmente, isso acontece quando a API HTTP do serviço de e-mail retorna uma resposta HTTP diferente de 200.
Você pode acessar o erro de solicitação de rede usando a propriedade error.cause
. A propriedade cause
é o objeto de erro retornado por got
(pacote npm).
- Código de status: 400
- Automanipulado: Não
import { errors as mailErrors } from '@adonisjs/mail'
if (error instanceof mailErrors.E_MAIL_TRANSPORT_ERROR) {
console.log(error.cause)
}
E_SESSION_NOT_MUTABLE
A exceção é gerada pelo pacote @adonisjs/session
quando o armazenamento de sessão é iniciado no modo somente leitura.
- Código de status: 500
- Automanipulado: Não
import { errors as sessionErrors } from '@adonisjs/session'
if (error instanceof sessionErrors.E_SESSION_NOT_MUTABLE) {
console.log(error.message)
}
E_SESSION_NOT_READY
A exceção é gerada pelo pacote @adonisjs/session
quando o armazenamento de sessão ainda não foi iniciado. Este será o caso quando você não estiver usando o middleware de sessão.
- Código de status: 500
- Automanipulado: Não
import { errors as sessionErrors } from '@adonisjs/session'
if (error instanceof sessionErrors.E_SESSION_NOT_READY) {
console.log(error.message)
}