Se si rileva un errore o un'altra situazione nel flusso di messaggi in cui si desideri che l'elaborazione del messaggio venga completata, è possibile generare un'eccezione in un flusso di messaggi in due modi:
Includere l'istruzione THROW ovunque nel modulo ESQL per un nodo Compute, Database o Filter. Utilizzare le opzioni nell'istruzione per codificare i propri dati da inserire nell'eccezione.
Impostare le proprietà del nodo per identificare l'origine e il contenuto dell'eccezione.
Utilizzando le opzioni dell'istruzione o le proprietà del nodo, è possibile specificare un identificativo del messaggio e i valori inseriti nel testo del messaggio per fornire ulteriori informazioni e identificazione agli utenti che interpretano l'eccezione. E' possibile specificare qualsiasi messaggio in qualsiasi catalogo disponibile per il broker. Consultare Utilizzo della registrazione eventi da un'estensione definita dall'utente per ulteriori informazioni.
Le situazioni in cui si potrebbe generare un'eccezione sono determinate dal funzionamento del flusso di messaggi; stabilire, al momento della progettazione del flusso di messaggi, dove questa azione potrebbe essere appropriata. Ad esempio, si potrebbe voler esaminare il contenuto del messaggio di input per assicurarsi che rispetti dei criteri che non possono essere rilevati dal nodo di input (che potrebbe controllare che venga ricevuto un formato particolare del messaggio).
L'esempio riportato di seguito utilizza il messaggio di esempio Invoice per mostrare come utilizzare l'istruzione ESQL THROW. Se si desidera controllare che il numero di fattura rientri in un intervallo particolare, generare un'eccezione per tutti i messaggi relativi alla fattura che non rientrano nell'intervallo valido.
--Controllare il numero di fattura inferiore all'intervallo consentito IF Body.Invoice.InvoiceNo < 100000 THEN THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1234 VALUES ('Invoice number too low', Body.Invoice.InvoiceNo); -- Controllare il numero di fattura superiore all'intervallo consentito ELSEIF Body.InvoiceNo > 500000 THEN THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1235 VALUES ('Invoice number too high', Body.Invoice.InvoiceNo); ELSE DO -- il numero di fattura rientra nell'intervallo consentito -- completare la normale elaborazione ENDIF;