ホームページ >Java >&#&チュートリアル >Javaの例外とアサーションの使用方法

Javaの例外とアサーションの使用方法

WBOY
WBOY転載
2023-04-20 08:31:061710ブラウズ

Java 例外

Java では、例外オブジェクトは常に Throwable サブクラスのインスタンスです。

Error クラス システムは、Java オペレーティング システムの内部エラーとリソース枯渇の状況を記述します。

プログラミングによって発生したエラーは、RuntimeException を引き起こします。他のエラー理由によって発生する例外 - たとえば、I/O エラーが原因で一度は正常に実行されたプログラム内のエラーは、RuntimeException 例外を引き起こしません。

RuntimeException から派生する例外には次の問題が含まれます: 1> 間違った型変換; 2> 配列の範囲外へのアクセス; 3> null ポインターへのアクセスの試行。

RuntimeException から派生しない例外には、次のものが含まれます:

1>ファイルの末尾の後ろからデータを読み取ろうとする試み;

2>ファイルを不正に開こうとする試みフォーマットされた URL;

3>文字列を使用して Class オブジェクトを構築しようとしましたが、その文字列に対応するクラスが存在しない場合;

RuntimeException を処理する原則は次のとおりです: RuntimeException の場合エラーが発生した場合は、それはあなたのエラーです。

ブラウザによって処理できる URL の種類が異なるため、URL 形式が間違っているかどうかは、プログラム コードだけでなく、特定の環境によって決まります。

Java言語仕様には、Error のサブクラスがリストされており、RuntimeException のサブクラスは未チェック例外と呼ばれ、他の例外はチェック例外と呼ばれます。

例外は、次の 4 つの状況でのみスローされます。 「チェック例外」をスローするメソッド (BufferReader クラスの readLine メソッドなど);

2>プログラムの実行中にエラーが発生し、「チェック例外」;

3〉プログラム エラー。たとえば、a[-1]=0 は、範囲外の配列インデックス (ArrayIndex--OutOfBoundsException) などの「未チェック例外」をスローします。

# #4〉内部エラーが発生しました。 Java 仮想マシンまたはランタイム ライブラリ;

Java で内部エラーを宣言する必要はありません。メソッドは、スローする可能性のあるすべての「チェック例外」を宣言する必要があります。独自のサブクラスで親クラスのメソッドをオーバーライドする場合。特に注意が必要なのは、親クラスのメソッドが「チェック例外」をまったくスローしない場合、サブクラスは同じことしかできないことです。

Java では、throws インジケータのないメソッドは Java 例外をスローできません。チェックされている;

try/catch コード ブロックの場合、メソッド内のコードが例外をスローし、その型が catch で指定されていない場合、メソッドはすぐに終了します。

catch および処理方法がわかっている例外を処理し (catch を使用)、処理方法が不明な例外を渡す (throw を使用);

try/catch/finally コード ブロックの場合、キャッチされたかどうかに関係なく、例外ではない場合、finally 句のコードが実行されます;

Java プログラマは、リソースをリサイクルするために、finally 句のコードを手動で設定する必要がありますが、Java の組み込みの「ガベージ コレクション」メカニズムにより、リソースの数が非常に少ない 手動のリサイクルのみが必要です;

actionPerformed メソッドはチェック例外をスローできません;

Java 例外メカニズムを使用するためのヒント:

1>例外制御は単純なテストを置き換えることはできません。単純なテストの実行と比較して、例外をキャッチするのに必要な時間は前者よりもはるかに長いため、例外は異常な状況でのみ使用する必要があります。

2>例外を過度に調整しないでください。

3>例外を抑制しないでください: 次の形式を使用できます: try { //code} catch (Exception e) { //empty}

4>恥ずかしがらないでください例外の受け渡しについて: 特定の例外 (FileInputStream コンストラクターや readLine メソッドの呼び出しなど) については、キャッチするよりも渡す方が適切です。高レベルのメソッドでユーザーにエラーを通知したり、失敗したコマンドを中止したりする方が適切です。

Java アサーション

デフォルトでは、Java アサーションはオフになっています。 -ea で開き、-da で閉じることができます。オプション -ea:... は、デフォルト パッケージ内のすべてのクラスのアサーション機能をオンにします。アサーションのオン/オフはクラス ローダーの機能です。

-da および -ea オプションは、次の場合に適しています。これらの「クラスローダーのないシステム」クラス」は効果がありません。これらのシステム クラスの場合、-enablesystemassertions/-esa オプションを使用してアサーション機能をオンにします。

Java アサーションの使用上のヒント:

1>アサーションの失敗は致命的で回復不可能なエラーです。

2>アサーション チェックはプログラムの開発およびテスト中にのみ使用されます;

したがって、アサーションはプログラムの他の部分に回復可能なエラーが発生したことを通知する信号として使用されるべきではなく、アサーションを使用する必要があります。通知者の方法として。 Java アサーションは、テスト段階でプログラム内の内部エラーを特定するためにのみ使用する必要があります。

Java アサーションはテストおよびデバッグ段階で使用されるツールですが、ロギングは、プログラムのライフサイクル全体を通じて使用される戦略的なツールです。プログラム。

以下は、think in java のセクションです。

違反ガイドライン

違反を使用して、次のことを行います:

( 1) 問題を修正し、違反の原因となったメソッドを再度呼び出します。

(2) 状況を落ち着かせ、メソッドを再試行せずに続行します。

(3) メソッドで生成したい結果以外の結果を計算します。

(4) 現在の環境で可能な限り問題を解決し、同じ違反をより高度な環境に再投入します。

(5) 現在の環境で可能な限り問題を解決し、さまざまな違反をより高度な環境に再スローします。

(6) プログラムの実行を中止します。

(7) コーディングを簡素化します。違反スキームによって事態がさら​​に複雑になる場合は、非常に迷惑になるため、使用しない方がよいでしょう。

(8) 独自のライブラリとプログラムをより安全にします。これは「短期投資」 (デバッグを容易にするため) と「長期投資」 (アプリケーションの堅牢性を向上させるため) の両方です。

以上がJavaの例外とアサーションの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。