MAXScript には C++ 例外処理手順を単純化した try 式があり、例外処理を簡単に行えます。
try 式を使用してコードの一部をカッコで囲み、コード内のランタイム エラーを見つけることができます。
これにより、MAXScript がスクリプトの実行を中止してエラー メッセージを出力する代わりに、適切に応答したり、正しい操作を実行することができます。
<protected_expr> が実行され、発生したエラーがトラップされて <on_err_expr> が実行されます。
<protected_expr> がブロック式である場合、このブロック式によってエラーの発生位置で実行が中止されます。
保護された式にエラーがない場合、<on_err_expr> は実行されません。
これは、非常に単純なエラー トラップ手法なので、エラー コードや発生したエラーに関する情報などは取得できません。
この例では、 read_some_data() 関数のデータの読み込みまたは処理中に発生したエラーがトラップされます。その後、メッセージ ボックスが表示され、クリーンアップが行われます。
関連する throw() 関数は、一時的なクリーンアップを行う場合に、独自のランタイム エラーを生成して捕らえたエラーを渡したり、非ローカル ジャンプを行うのに使えます。
介入する catch がスクリプト内にない場合は、引数にエラー メッセージを指定して throw() を呼び出すと、ランタイム エラーが表示され、MAXScript の標準エラー レポート機能によってエラー メッセージがレポートされます。
2 つ目のオプションの引数は、エラー メッセージで出力する任意の値(おそらくエラーに関連するオブジェクト)です。
throw が catch() 本体にある場合、この 2 番目の引数は指定できません。指定するとコンパイル エラーが生成されます。
try / catch が別の try 式内にある場合に throw() を呼び出すと、外部の try 式に関連付けられている catch 式が実行されます。
介入する catch がスクリプト内にない場合は、 throw() を呼び出すと、MAXScript は try / catch を囲むカッコ内の先頭からスクリプトの実行を継続します。または、 try / catch を囲むカッコがない場合は、現在実行中のスクリプトを中止します。
何らかの処理(クリーンアップ処理など)を施すためにエラーをキャッチし、外部ハンドラか MAXScript にエラーを渡してエラーをレポートするには、 throw() を引数なし呼び出します。
これは、現在のエラーを送出するので、エラーのレポートは必ず catch 式の中で行わなければなりません。