#1. 例外の実装と分類
##1. まず例外クラスの構造図を見てください。
上図は例外クラスの実装構造図を簡単に示したものですが、もちろん上図がすべての例外ではなく、ユーザー自身で例外実装をカスタマイズすることも可能です。上の図は、例外の実装を説明して理解するのに十分役立ちます:
java 関連の無料ビデオ チュートリアル:
java 教育ビデオ1. すべての例外は次から継承されます。投擲可能 それはすべての異常の共通の祖先です。
2.
Throwable には、Error
と Exception
という 2 つのサブクラスがあります。 Error がエラーである場合、すべてのコンパイル時エラーとシステム エラーは Error を通じてスローされます。これらのエラーは、Java 仮想マシン実行エラー (
)、クラス定義エラー () など、仮想マシン自体で障害が発生したか、仮想マシンがアプリケーションを実行しようとしたときに発生したことを示します。 NoClassDefFoundError
) など。 これらのエラーは、アプリケーションの制御および処理能力の範囲外にあるためチェックできません。また、そのほとんどはプログラムの実行中に発生することが許されない状況です。適切に設計されたアプリケーションの場合、たとえエラーが発生したとしても、それが引き起こした例外状態を処理しようとする必要はありません。 Java では、エラーは Error のサブクラスを通じて記述されます。
3.
Exception は、もう 1 つの非常に重要な例外サブクラスです。指定する例外は、プログラム自体が処理できる例外です。
例外とエラーの違いは、例外は処理できますが、エラーは処理できないことです。
4.
チェックされた例外 チェック可能な例外はコーディング時に非常によく使用され、すべてのチェックされた例外はコード内で処理する必要があります。これは通常の状況であり、
や一部のカスタム例外など、合理的に処理できます。 RuntimeException
とそのサブクラスを除き、これらはすべてチェック例外です。 5.
とそのサブクラスはすべて未チェック例外です。たとえば、NPE null ポインタ例外、除数が 0ArithmeticException
の場合の算術例外などです。この種の例外は実行時に発生するため、事前に捕捉して処理することはできません。エラーも未チェックの例外であり、事前に処理することはできません。
コード内の例外処理は、実際にはチェック可能な例外の処理です。
1. try...catch ステートメント ブロックを通じて処理されます:
try { // 程序代码 }catch(ExceptionName e1) { //Catch 块 }
Catch ステートメントには、キャッチする例外タイプのステートメントが含まれています。保護されたコード ブロックで例外が発生すると、try に続く catch ブロックがチェックされます。
発生した例外が catch ブロックに含まれている場合、例外は catch ブロックに渡されます。これは、メソッドにパラメータを渡すのと同じです。
2. また、特定の場所で処理せずに直接スローし、上位層へのスロー/スローで処理することもできます。その場合、メソッドは throws キーワードを使用して宣言する必要があります。
throws キーワードはメソッド シグネチャの最後に配置されます。また、 throw キーワードを使用して、例外が新しくインスタンス化されたか、単にキャッチされたかに関係なく、例外をスローすることもできます。
次のメソッドの宣言は、RemoteException 例外をスローします:
import java.io.*; public class className { public void deposit(double amount) throws RemoteException { // Method implementation throw new RemoteException(); } //Remainder of class definition }
3.finally キーワード
finally キーワードは、try の後に実行されるコード ブロックを作成するために使用されます。コードブロック。例外が発生するかどうかに関係なく、finally ブロック内のコードは常に実行されます。 Finally コード ブロックでは、クリーンアップ タイプなどのクリーンアップ ステートメントを実行できます。
finally コード ブロックは catch コード ブロックの最後に表示され、構文は次のとおりです:
try{ // 程序代码 }catch(异常类型1 异常的变量名1){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }finally{ // 程序代码 }
推奨 Java 関連記事チュートリアル:
java エントリ プログラム以上がJava の例外タイプと例外処理の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。