例外処理ステートメントでは、既定のエラー処理メカニズムをバイパスし、エラー後のイベントのシーケンスをコントロールできます。Intent 言語では、これは Try...Catch...Finally ステートメントから行います。
Try 句は 1 つの Try ブロックと、その後に続く任意の数のオプションの Catch ブロックと、1 つの Finally ブロックで構成されています。単純な Try...Catch...Finally ステートメントの構文を以下に示します。
Try [<statements>] [Catch [identifier] [<statements>]] [Finally [<statements>]] End Try
Try ブロックに記述されたステートメントが実行されます。評価中に例外が発生した場合、Catch ブロックが検査され、例外と一致するかどうかが確認されます。Catch ブロックが例外と一致した場合、Catch ブロックのステートメントが評価されます。Try ブロックまたは Catch ブロックが終了すると、例外が発生して処理されているかどうかにかかわらず、Finally ブロックが実行されます。
Try ブロックで例外が生成されると、存在する場合は Catch ブロックが順次確認され、例外を処理できるかどうかが判断されます。一致する最初の Catch のみがステートメントを実行されます。
構文:
Catch [identifier] [<statements>]]
Catch 句で指定された識別子は、システム デザイン エラーから派生する必要のある、エラー パーツのデザインを示します。したがって、Catch Error はいずれかの例外と一致します。
Finally ブロックは、Try ブロックが終了するか、選択した Catch ブロックが終了したときに実行されます。少なくとも 1 つの Catch ブロックがある場合、Finally ブロックは省略可能です。
構文:
[Finally [<statements>]]
次の例では、Try ブロック内のステートメントが荷重パラメータを制限と比較します。荷重の値が制限を超えない場合には、Try ブロックが終了し、Finally ブロックのステートメントによりシステム メッセージが出力され、ループが繰り返されます。荷重の値が制限を超える場合には、例外が生成されプログラムの実行が中止されます。ただし、プログラムが中止される前に、Catch ブロックのステートメントにより実行を中止する前のシステム メッセージが出力されます。
Parameter Rule unitWeight As Integer = 5
Rule load As Number
Dim counter As Integer = 1
Dim limit As Number = 25.0
Dim strItem As String = " item."
Do
If counter > 1 Then
strItem = " items."
End If
load = load + unitWeight
Try
If load > limit Then
Error()
End If
Catch Error
printValue("ERROR: Load limit exceeded! Load = " + stringValue(load) + _
"kg. Program execution halted.")
Error("ERROR: Load limit exceeded!", " Load = " + stringValue(load) + _
"kg for " + stringValue(counter) + strItem + " " + _
stringValue(limit) + "kg limit exceeded!")
Finally
If load <= limit Then
printValue("Load = " + stringValue(load) + _
"kg for " + stringValue(counter) + strItem)
End If
End Try
counter = counter + 1
Loop Until counter > 10
End Rule

Exit ステートメントを使用することで Try...Catch ステートメントを終了できます。