# Throw Error

O **Throw Error** emite um erro dentro de um *pipeline* ou *subpipeline*. Ele pode ser usado para:

* interromper um *pipeline* com erro.
* interromper um componente que utilize *subpipelines* para processamento.

## Parâmetros

Dê uma olhada nas opções de configuração do componente. Parâmetros suportados por [expressões *Double Braces*](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/overview) estão marcados com `(DB)`.

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Error Message</strong></td><td>Define a mensagem de erro que acompanha o código de erro.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>HTTP Status Code</strong></td><td>Define o código do erro (utilizamos como base códigos de erro HTTP).</td><td><em>500-Internal Server Error</em></td><td>Inteiro</td></tr><tr><td><strong>Enable Custom Error</strong></td><td>Define que o usuário deseja utilizar um erro customizado.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Custom Error (JSON)</strong></td><td>Pode ser usado para definir uma mensagem customizada de erro (neste caso, <strong>HTTP Status Code</strong> e <strong>Error Message</strong> são ignorados).</td><td>N/A</td><td><em>String</em></td></tr></tbody></table>

## Throw Error em ação <a href="#throw-error-em-ao" id="throw-error-em-ao"></a>

### Tratamento de erros padrão (customErrorEnabled) <a href="#tratamento-de-erros-padro-customerrorenabled" id="tratamento-de-erros-padro-customerrorenabled"></a>

O **Throw Error** pode ser utilizado para o tratamento de erros padrão. Erro padrão é aquele que segue as definições da Digibee Integration Platform e que contém um código e uma mensagem.

Quando esse tipo de erro resulta na interrupção do *pipeline*, então a seguinte saída é produzida:

```
{
  "timestamp": <um número longo informando o timestamp de quando o erro foi gerado>,
  "error": <a mensagem configurada>,
  "exception": "PipelineEngineRuntimeException",
  "code": <o código configurado>
}
```

### Tratamento de erros customizados <a href="#tratamento-de-erros-customizados" id="tratamento-de-erros-customizados"></a>

O **Throw Error** também pode ser utilizado para o tratamento de erros customizados. Nesse caso, um objeto JSON completo é informado na configuração do componente e posteriormente informado na saída do *pipeline* que resultou em erro.

{% hint style="info" %}
Alguns *triggers*, como por exemplo [**REST**](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/triggers/web-protocols/rest), [**HTTP**](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/triggers/web-protocols/http) e [**HTTP File**](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/triggers/web-protocols/http-file), necessitam receber uma propriedade *code* e uma propriedade *error* na saída do *pipeline* para preparar o código de retorno da chamada HTTP.
{% endhint %}

### Componentes que utilizam *subpipelines* <a href="#componentes-que-utilizam-subpipelines" id="componentes-que-utilizam-subpipelines"></a>

Quando o ***Throw Error*** é utilizado em um componente que utiliza o *subpipeline* **onProcess**, o erro configurado é informado como entrada do *subpipeline* **onException**. Se a opção **Custom Error (JSON)** for preenchida, então o conteúdo do objeto JSON é igual ao descrito nas seções [Tratamento de erros padrão](#tratamento-de-erros-padro-customerrorenabled) ou [Tratamento de erros customizados](#tratamento-de-erros-customizados).

Para entender melhor o conceito, [leia o artigo Subpipelines](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/build-overview/pipelines/subpipelines).
