throws文throws文Javaで用意されているクラスのメソッドを使うときに、例外処理を記述しないと使えないものがあります。今まで作成したサンプルで、BufferedReaderクラスのreadLineメソッドを使ってきましたが、このメソッドは必ず例外処理を記述する必要があります。例外を表すクラスは~Exceptionという名前が付与されています。継承関係をドキュメントで確認するとExceptionクラスを継承していることを確認できます。そのクラスの中でもRuntimeExceptionクラスを継承している例外クラスは例外処理を強制しません。BufferedReaderクラスのreadLineメソッドは、ドキュメントによるとIOExceptionがスローされる可能性があると説明されています。このIOExceptionクラスは継承関係を見てみるとRuntimeExceptionクラスを継承していないので、例外処理を記述しないとコンパイルエラーとなります。それに対して、IntegerクラスのparseIntメソッドはNumberFormatExceptionクラスがスローされる可能性があると説明されています。このNumberFormatExceptionクラスは継承関係を見てみるとRuntimeExceptionクラスを継承しているので、例外処理を記述していなくてもコンパイルエラーとはなりません。例外処理を記述せずに実行しもし例外がスローされたら、その時にプログラムが停止して、トレース情報が表示されます。例外処理は前節のようにtry~catch文を使うほかに、throws文を使うことができます。この文を使用すると例外処理をthrows文が定義されているメソッドを呼び出したプログラムに依頼することができるようになります。...{...}Run6クラスを見てみましょう。このクラスはreadLineメソッドを使用しているため、例外処理を明示的に記述する必要があります。try~catch文を記述していません。コンパイルは成功します。Exception」と指定されているためです。この記述はmainメソッド内で発生する例外の処理は、mainメソッドを呼び出している処理に任せることができます。呼び出している処理内でtry~catch文が記述されていれば、例外処理が実行されます。