この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

Exception ステートメント

Apex では、Exception を使用して、コード実行の正常な流れを中断させるエラーその他のイベントを記録します。throw ステートメントは例外の生成に使用でき、trycatch、および finally は例外から適切に復旧するために使用できます。

throw ステートメント

throw ステートメントを使用して、エラーが発生したことを通知できます。例外を発生させるには、throw ステートメントに例外オブジェクトを指定して、特定のエラーに関する情報を提供します。次に例を示します。
1throw exceptionObject;

Try-Catch-Finally ステートメント

trycatchfinally の各ステートメントを使用して、発生した例外から適切に復旧できます。
  • try ステートメントは例外が発生する可能性のあるコードのブロックを識別します。
  • catch ステートメントは、特定の種類の例外を処理できるコードのブロックを識別します。1 つの try ステートメントに、catch ステートメントを 1 つ以上関連付けられます (まったく関連付けないこともできます)。各 catch ステートメントには一意の例外種別が必要です。また、特定の例外種別が 1 つの catch ブロックでキャッチされると、残りの catch ブロックが存在する場合でもそれらのブロックは実行されません。
  • finally ステートメントは実行が保証されているコードのブロックを識別し、コードをクリーンアップすることができます。1 つの try ステートメントに finally ステートメントを 1 つまで関連付けられます。finally ブロックのコードは、例外の発生の有無や発生した例外の種別に関係なく、常に実行されます。finally ブロックは常に実行されるため、リソースの解放などのクリーンアップコードに使用します。

構文

trycatch、および finally ステートメントの構文は次のとおりです。

1try {
2  // Try block
3 code_block
4} catch (exceptionType variableName) {
5  // Initial catch block.
6  // At least the catch block or the finally block must be present. 
7 code_block
8} catch (Exception e) {
9  // Optional additional catch statement for other exception types.
10  // Note that the general exception type, 'Exception',
11  // must be the last catch block when it is used.
12 code_block
13} finally {
14  // Finally block.
15  // At least the catch block or the finally block must be present.
16 code_block
17}

try ブロックを使用する場合は、catch ブロックと finally ブロックの少なくともいずれかが存在する必要があります。try-catch ブロックの構文は次のとおりです。

1try {
2 code_block
3} catch (exceptionType variableName) {
4 code_block
5}
6// Optional additional catch blocks

try-finally ブロックの構文は次のとおりです。

1try {
2 code_block
3} finally {
4 code_block
5}
これは、try-catch-finally ブロックの骨格のみの例です。
1try {
2    // Perform some operation that 
3    //   might cause an exception.
4} catch(Exception e) {
5    // Generic exception handling code here.
6} finally {
7    // Perform some clean up.
8}

キャッチできない例外

キャッチできない特殊なタイプの組み込み例外もあります。このような例外は、Force.com プラットフォームの重大な状況に関連付けられています。このような状況では、コードの実行を中止する必要があります。例外処理で実行を再開することはできません。このような例外の 1 つとして、ガバナ制限に達した場合 (SOQL クエリの最大発行数に達した場合など) に実行時に発生する制限の例外 (System.LimitException) があります。他の例として、アサーションステートメント (System.assert メソッドを使用) に失敗した場合に発生する例外やライセンスの例外が挙げられます。

例外をキャッチできない場合、catch ブロックや finally ブロック (ある場合) は実行されません。