このJava例外チュートリアルでは、Javaにおける例外とは何か、チェックされた例外とは何か、および非チェック例外とはどのように異なるかについて学びます。 また、についてのセキュリティに最善の対策を施Javaチ例外をスローしました。
Table of Contents1. What is an exception in Java?2. Checked vs unchecked exceptions in Java3. Java exception handling best practices
Javaの例外は何ですか?
“例外は、命令の通常のフローを中断するプログラムの実行中に発生する予期しないイベントです。,”
Javaでは、すべてのエラーと例外はThrowableクラスで表されます。 メソッド内でエラーが発生すると、メソッドは(Throwable
の任意のサブタイプの)オブジェクトを作成し、ランタイムシステムに渡します。 例外オブジェクトと呼ばれるオブジェクト。
例外オブジェクトには、エラーが発生したときのタイプやプログラムの状態など、エラーに関する情報が含まれています。 例外オブジェクトを作成して実行時システムに渡すことは、例外をスローすることと呼ばれます。
1.1., 例外処理
アプリケーションで例外オブジェクトが作成されると、二つの選択肢があります。
- メソッド内で処理するか、呼び出し元のメソッドに渡して処理させることができます。
これは、メソッドの責任を設定する際に行われる非常に重要な決定です。 メソッドは、処理するすべての例外的なシナリオと処理しないシナリオを明確に示す必要があります。 メソッド構文using throws句で定義されています。
例外を処理するには、try-catchブロックのcatchセクションで例外をキャッチする必要があります。,
If an exception is not handled in the application, then it will propagate to JVM and JVM will usually terminate the program itself.
Checked vs unchecked exceptions in Java
2.1. Exception Hierarchy
In Java, exceptions are broadly categorized into two sections: checked exceptions and unchecked exceptions.
2.2. Checked Exceptions
Java forces you to handle these error scenarios in some manner in your application code., 早いもので直ちにその顔は、一度始の作成ます。 あなたは間違いなくそれらを無視してJVMに渡すことができますが、それは悪い習慣です。 理想的には、これらの例外をアプリケーション内で適切なレベルで処理して、失敗についてユーザーに通知し、後で再試行するように依頼する必要がありま
一般的に、チェックされた例外は、プログラムのすぐに制御できないエラーシナリオを示します。 発生した通常との交流は外部リソース-ネットワーク資源などのデータベースの問題、ネットワーク接続エラー、欠ファイル等,
Checked exceptions are subclasses of Exception class.
Example of checked exceptions are : ClassNotFoundException, IOException, SQLException and so on.
Checked Exception Example
FileNotFoundException
is a checked exception in Java. Anytime, we want to read a file from filesystem, Java forces us to handle error situation where file may not be present in place.
public static void main(String args) { FileReader file = new FileReader("somefile.txt");}
In above case, you will get compile time error with message – Unhandled exception type FileNotFoundException
.,
プログラムをコンパイルできるようにするには、try-catch
ブロックでこのエラー状況を処理する必要があります。 下記されている総コンテンツは絶対にコンパイルす。
2.3. 非チェック例外
JavaではUncheckedExceptionsも提供されますが、その発生はコンパイラによってチェックされません。 バグのあるコードが実行されると、それらはあなたのプログラムに生きる/発生します。
メソッドは、実装によってスローされる非チェック例外を宣言するようにコンパイラによって強制されません。 一般に、そのような方法はほとんど常にそれらを宣言しません。,
非チェック例外はRuntimeExceptionのサブクラスです。 チェックされていない例外の例は、ArithmeticException
、ArrayStoreException
、ClassCastException
などです。
RuntimeException
それ自体がException
すなわち、すべての非チェック例外クラスは暗黙的にチェックされた例外である必要がありますが、そうではありません。”非チェック例外の例
以下の指定されたコードをチェックアウトします。 上記のコードはコンパイル時エラーを与えません。, しかし、この例では、NullPointerException
がスローされます。 NullPointerExceptionは、Javaの非チェック例外です。
チェック例外と非チェック例外の最大の違いは、チェック例外がコンパイラによって強制され、プログラムの制御外の例外的な条件(I/Oエラーなど)を示すために使用されるのに対し、非チェック例外は実行時に発生し、プログラミングエラー(ヌルポインターなど)を示すために使用されることであることを覚えておいてください。,
Java例外処理のベストプラクティス
- チェックされた例外は、メソッドがその名前が言うことを行うことができない場合に使用できます。 たとえば、prepareSystem()という名前のメソッドは、設定ファイルを事前入力し、それらを使用していくつかの設定を行い、throwing
FileNotFoundException
を宣言できます。 - チェックされた例外は、プログラミングエラーには決して使用すべきではありませんが、リソースエラーやそのような場合のフロー制御には絶対に使用,
- メソッドが何らかの手段で処理できない例外のみをスローします。 メソッドは、最初に遭遇したらすぐに処理しようとする必要があります。 メソッド内で処理できない場合にのみ、例外をスローします。
- メソッドシグネチャを定義する良い方法は、メソッド名の近くに例外を宣言することです。 メソッドの名前が
openFile
の場合、FileNotFoundException
をスローすることが予想されますか?. メソッドの名前がfindProvider
の場合、NoSuchProviderException
をスローすることが期待されます。,また、これらのタイプの例外は、呼び出し元がメソッドの意味に固有の問題に対処するように強制されるため、チェック例外にする必要があります。 - ルールは、クライアントが例外から回復することが合理的に期待できる場合は、チェックされた例外にします。 クライアントが例外から回復するために何もできない場合は、非チェック例外にします。実際には、ほとんどのアプリケーションは、
NullPointerException
、IllegalArgumentExceptions
および他の多くの非チェック例外を含むほとんどすべての例外から, 失敗したaction/transactionは中止されますが、アプリケーションは生き続け、次のaction/transactionを提供する準備ができている必要があります。アプリケーションをシャットダウンすることが通常正当である唯一の時間は、起動時です。 例えば、設定ファイルが抜けのない良識あるものの、それは法的に停止します。,
結論
この記事では、Javaのチェックされた例外と非チェック例外の違い、非チェック例外の処理方法、Javaの例外階層を例として学びました。
コメントにあなたの質問をドロップすること自由に感じます。
幸せな学習!!,
- Asynchronous and synchronous exceptions
- exception handling using inner classes
- exception handling best practices
- effectively handle NullPointerException
- Custom exceptions in Java
- Java exception doc
Leave a Reply