Saltar para o conteúdo principal
Versão: Próximo

throw

throw ( errorCode {; descrição} ) 

        *throw* {( *erroObj* )}
ParâmetroTipoDescrição
errorCodeInteiro longo🡒Um inteiro longo representando o código de erro
descriçãoTexto🡒Um texto fornecendo uma descrição do erro
throw {( erroObj )}
ParâmetroTipoDescrição
erroObjObjeto🡒Um objeto contendo propriedades para construir o erro

Descrição

O comando throw cria um erro que será lançado inmediatamente ou quando o método que o chamar o devolva a seu chamador (modo diferido).

Quando se encuentrar com uma situação em seu código 4D em que surja uma condição de erro, pode utilizar o comando throw para lançar explícitamente um erro e dar uma mensagem de erro específica ou um número de erro. Isso pode ser útil para assinalar condições excepcionais ou entradas inválidas.

Os erros lançados utilizando o comando throw são gestionados pelo runtime de 4D como qualquer erro normal: se mostrar o diálogo de erro padrão a menos que se tenha instalado um método de intercepção utilizando o comando ON ERR CALL.

O comando admite três sintaxes:

throw(errorCode{; description})

Especifica o código de erro e um texto de descrição opcional, o erro se lança imediatamente.
Se não indicar nenhuma descrição, se preenche com:

  • Código de erro (errorCode): (host) na aplicação local
  • Código de erro (errorCode): (C00x) em um componente
throw(errorObj)

O objeto errorObj permite obter informação de erro mais detalhada e controlar a gestão de erros. Pode conter as seguintes propriedades, assim como toda propriedade personalizada à que possa fazer referência à propriedade message.

Pode conter as seguintes propriedades, assim como toda propriedade personalizada a que possa fazer referência utilizando marcadores de posição dentro da propriedade message.

propriedadetipo
descrição
componentSignaturetextAssinatura de quatro letras para identificar de forma única a origem do erro. Se não indicar componentSignature, o comando utilizar "host" para o banco de dados host, e "C001", "C002", ... para os componentes.
errCodenumberCódigo de erro.
Se não indicar errCode, o comando utiliza -1.
messagetextDescrição do erro.
A mensagem pode conter marcadores de posição que serão substituídos por propriedades personalizadas adicionadas ao objeto errorObj. Cada marcador de posição deve especificar-se utilizando chaves {} terminando o nome da propriedade a utilizar. Se a mensagem não for indicada ou for uma string vazia, o comando buscará uma descrição nos arquivos xliff da base de dados atual com um renome construido assuim: ERR_{component}_{code}".
deferredbooleanTrue se o erro deve diferir-se quando voltar o método atual. O valor por padrão é false.

Quando se utilizar esta sintaxe, o objeto errorObj se devolve em Últimos erros.

Nota: é possível chamar o comando várias vezes no mesmo projeto para gerar vários erros. Pode usar a opção diferida para enviar todos os erros de vez.

throw

Lança todos os erros atuais em modo diferido, o que significa que se adicionarão a uma pilha e serão geridas quando voltar ao método que os chama. Isso se faz tipicamente desde dentro de uma retrochamada ON ERR CALL.

  • Em uma aplicação: quando se produz um erro, se adiciona à pilha de erros e se chama ao método ON ERR CALL da aplicação ao final do método atual. A função Last errors devolve a pilha de erros.
  • Como consequência, em um componente: a pilha de erros pode ser enviada à aplicação local e se chama ao método ON ERR CALL da aplicação local.

Exemplo 1

 var $code : Integer
 var $description : text
 $code:=50042 //Código personalizado
 $description:=“This is a custom error”
 throw($code ;$description) //  Lança um erro com a mensagem "This is a custom error" e errCode = 50042

Example 2

throw({errCode: 1; message: "This an error"}) // Lança um erro com a mensagem errCode = 1 e a mensagem "This an error"

Exemplo 3

throw({errCode: 1}) // Lança um erro com  errCode = 1 e a mensagem "Error code: 1 (host)"

Example 4

throw({message: "This an error"}) // Lança um erro com errCode = -1 e a mensagem "This is my error"

Example 5

throw({message: "This is my error"; deferred: True}) // Lança um erro com a mensagem "This is my error" e errCode = -1 em modo diferido

Example 6

throw({componentSignature: "xbox"; errCode: 600; name: "myFileName"; path: "myFilePath"; deferred: True})// Lança um erro com a mensagem "File myFileName not found (myFilePath)" em modo diferido.

Ver também

ASSERT
Last errors
ON ERR CALL