ホームページ >Java >&#&チュートリアル >プログラミング言語の例外メカニズム
概要
ソフトウェアまたは情報システムの異常な状態(つまり、プログラムの通常の実行フローを超える特定の特殊な状態)に対処するために使用される、プログラミング言語またはコンピューター ハードウェアのメカニズム。さまざまなプログラミング言語には、例外の処理において非常に大きな違いがあります (エラー検出と例外処理の違いは次のとおりです: エラー検出は、正常に終了しない呼び出し操作など、通常のプログラム フローにおける予期せぬ問題を処理するコードです)。一部のプログラミング言語には、入力に不正なデータが含まれている場合、または戻り値を例外と効果的に区別できない場合に、安全に呼び出すことができない関数があります。たとえば、C 言語の atoi 関数 (ASCII 文字列から整数への変換) は、入力が不正な場合に 0 を返すことがあります。この場合、プログラマは追加のエラー検出 (おそらく C の errno などの補助グローバル変数を介して)、または入力検証 (正規表現などを介して) を実行するか、両方の方法を組み合わせて使用する必要があります。
例外処理を通じて、プログラムの不正な入力を制御し、ユーザーにプロンプトを表示して、プログラムのクラッシュを防ぐことができます。
プロセスの観点から見ると、ハードウェア割り込みは回復可能な例外と同等ですが、割り込みは通常、プログラム フロー自体とは何の関係もありません。
サブルーチン プログラマの観点から見ると、例外は、サブルーチンが正常に実行できないことを外部に通知するための非常に便利なメカニズムです。入力されたデータが無効である場合 (たとえば、除数が 0 である場合)、または必要なリソースが利用できない場合 (たとえば、ファイルが見つからない場合)。システムに例外メカニズムがない場合、プログラマは戻り値を使用して、どのようなエラーが発生したかを示す必要があります。 [1]
プログラミング言語の例外メカニズム
Actionscript、Ada、BlitzMax、C++、C#、D、ECMAScript、Eiffel、Java、ML、Object Pascal (Delphi、Free Pascal など) を含む多くの一般的なプログラミング言語)、Objective-C、Ocaml、PHP (バージョン 5)、PL/1、Prolog、Python、REALbasic、Ruby、Visual Prolog、およびほとんどの .NET プログラミング言語では、組み込みの例外メカニズムは関数呼び出しスタックに沿っています。関数呼び出しは次のとおりです。例外処理コードが見つかるまで逆方向に検索されます。一般に、スタックの巻き戻しは、この例外処理コードの検索プロセス中に段階的に完了します。ただし、Common Lisp は例外であり、スタック ロールバックを使用しないため、例外が処理された後、例外がスローされた場所から実行を再開できます。さらに、Visual Basic (特に 6.0 などの .net より前のバージョン) では、on error ステートメントで、例外の発生後にプログラマを再試行 (再開)、スキップ (次の再開)、または実行するかどうかを簡単に指定できます。エラーハンドラー (*** へ)。 [1]
ほとんどの言語の例外メカニズムの構文は似ています。例外オブジェクト (Java や C++ など) または特別な拡張可能な列挙型値 (Ada 言語など) をスローするには、 throw または raise を使用します。例外処理 コードのスコープは、mark 句 (try または begin で始まる言語スコープ) で始まり、最初の例外処理句 (catch、excel、resume など) で終わりを示します。複数の例外処理が連続して発生する可能性があります。それぞれの句が特定の種類の例外を処理します。一部の言語では、例外が発生しない状況で else 節を使用できます。より一般的なのは、finally、ensure 句です。これは、例外が発生したかどうかに関係なく実行され、例外処理に必要なリソースを解放するために使用されます。 [1]
C++ 例外処理は、Resource-Acquisition-Is-Initialization の基礎です。 [1]
C 言語は一般に例外処理をサポートしていないと考えられています。 Perl 言語は、オプションで構造化例外処理をサポートします。 [1]
Python 言語は例外処理メカニズムについて非常に一般的かつ詳細であるため、try andException を使用せずにプログラムを記述することは非常に困難です。 [1]
用語の説明
例外処理は、英語では例外処理とも呼ばれ、減少するエラーコード方式に代わる新しい方式であり、エラーコードにはない特有の利点を提供します。例外処理は、エラー コードの受信と処理を分離します。この機能により、プログラマーの考えが明確になり、コードの可読性が向上し、保守者が読みやすく、理解しやすくなります。
例外処理 (エラー処理とも呼ばれる) 機能は、プログラムの実行中に発生する予期しないまたは異常な状態を処理する方法を提供します。例外処理では、try、catch、finally キーワードを使用して、成功しない可能性のある操作を試行し、失敗を処理し、その後リソースをクリーンアップします。
例外処理は通常、未知のエラーの発生を防ぐために取られる措置です。例外処理の利点は、さまざまなエラーを考慮するために頭を悩ませる必要がなくなることです。これにより、特定の種類のエラーを処理するための非常に効果的な方法が提供され、プログラミング効率が大幅に向上します。
例外は、共通言語ランタイム (CLR)、サードパーティのライブラリ、または throw キーワードを使用するアプリケーション コードによって生成される可能性があります。
特徴
1. アプリケーションが異常な状況(ゼロ除算やメモリ不足の警告など)に遭遇すると、例外が生成されます。
2. 例外が発生すると、制御フローは関連する例外ハンドラー (存在する場合) に直ちにジャンプします。
3. 指定された例外に対する例外ハンドラーがない場合、プログラムは実行を停止し、エラー メッセージを表示します。
4. 例外を引き起こす可能性のある操作は、try キーワードを通じて実行されます。
5.例外ハンドラーは、例外が発生したときに実行されるコードのブロックです。 C# では、catch キーワードを使用して例外ハンドラーを定義します。
6. プログラムは throw キーワードを使用して明示的に例外をスローできます。
7. 例外オブジェクトには、コールスタックの状態やエラーに関するテキストの説明など、エラーに関する詳細情報が含まれます。
8. 例外がスローされた場合でも、finally ブロック内のコードが実行され、プログラムはリソースを解放できます。
以上がプログラミング言語の例外メカニズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。