質問: javaの例外についてです。 import java.io.IOException; public class Main { public static void main(String[] args) { throw new IOException(); } } このコードはコンパイルエラーが出るのですが、なぜでしょうか。 public static void main(String[] args) throws IOException ただし、このようにメソッド宣言時にスロー宣言すると、きちんと例外を投げることができます。 普通のコードであれば、例外が出現する可能性があるようなメソッドを呼んだ場合などにスロー宣言は必要になるかと思いますが、今回の場合そのようなメソッドは呼んでおらず、ただ単に例外を投げているだけです。 なぜ、文法エラーになるのでしょうか。
回答: `IOException`は**検査例外**といって、メソッドの外に投げる場合はメソッド段階で宣言が必要となります。 それは、内部で`IOException`を投げうるメソッドを呼び出す場合にも、自ら投げる場合にも共通します。