Javaの静的ブロックから例外をスローする方法とは?
静的ブロック(static block)とは、JVMがmain()メソッドを実行する前に実行される一連のステートメントのことです。クラスのロード時に何らかの処理を実行したい場合は、その処理を静的ブロック内に定義する必要があります。なぜなら、このブロックはクラスがロードされるタイミングで実行されるからです。
静的ブロックから例外をスローするには
- 静的ブロックがスローできるのはRuntimeException(非チェック例外)のみです。チェック例外を扱う場合は、try-catchブロックで捕捉して処理する必要があります。
- 静的ブロックは、クラスローダーによってクラスがロードされる際に実行されます。初期化のコードは、静的ブロックとして直接記述するか、staticデータメンバーを初期化するためのstaticメソッドの呼び出しという形で記述します。
- どちらのケースでも、コンパイラはチェック例外を許可しません。非チェック例外が発生した場合は、それがExceptionInInitializerErrorでラップされ、クラスロードをトリガーしたスレッドのコンテキストでスローされます。
- また、静的ブロックからチェック例外を直接スローすることもできません。静的ブロック内にtry-catchブロックを記述することは可能で、tryブロックからチェック例外がスローされる可能性はありますが、catchブロック内で必ず解決しなければなりません。throwキーワードを使って例外をさらに外へ伝播させることはできません。
サンプルコード
public class StaticBlockException {
static int i, j;
static {
System.out.println("In the static block");
try {
i = 0;
j = 10/i;
} catch(Exception e){
System.out.println("Exception while initializing" + e.getMessage());
throw new RuntimeException(e.getMessage());
}
}
public static void main(String args[]) {
StaticBlockException sbe = new StaticBlockException();
System.out.println("In the main() method");
System.out.println("Value of i is : "+i);
System.out.println("Value of j is : "+ j);
}
}
実行結果
In the static block
Exception while initializing/ by zero
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: / by zero
at StaticBlockException.(StaticBlockException.java:10)
この例では、静的ブロック内でゼロ除算が発生しています。catchブロックで例外を捕捉した後、新たにRuntimeExceptionをスローしているため、最終的にExceptionInInitializerErrorとして出力されます。このように、静的ブロック内で発生した非チェック例外は、クラス初期化エラーとしてラップされて通知される点に注意しましょう。
-
JavaでCSVファイルを読み込む方法|BufferedReaderによる基本的なデータ読み取り手順
CSVとは「Comma Separated Values(カンマ区切り値)」の略で、テキスト形式のデータファイルの一種です。CSVファイルでは、1行ごとに複数の項目がカンマ(,)で区切られて記録されており、拡張子は「.csv」として保存されます。表形式のデータを扱う際に広く利用されている、シンプルで汎用性の高いフォーマットです。 JavaでCSVファイルを読み込む仕組み JavaでCSVファイルを読み込むには、BufferedReaderクラスのreadLine()メソッドを使用するのが基本的な方法です。このメソッドを使うと、ファイルの内容を1行ずつ順番に読み取ることができます。 読み取った各
-
Windows 10で特定のWebサイトを開けなくする(ブロックする)方法
Webサイトとは、共通のドメイン名で識別され、少なくとも1つのWebサーバー上に公開される、Webページやマルチメディアコンテンツなどの関連ネットワークリソースの集合です。オフィス用にPCを設定したり、家庭内で子どもの閲覧を制限したりするなど、特定のWebサイトへのアクセスをブロックしたい場面は意外と多くあります。この記事では、Windows 10でWebサイトをブロックするための複数の方法を、手順付きでわかりやすく解説します。Windows 10でWebサイトを開けなくするには?Windows 10でサイトをブロックする方法はいくつもあります。ほとんどのサイトはブラウザ経由でアクセスされるた