1. ホーム
  2. java

[解決済み] Java のメソッド宣言で throws を使用するのはいつですか?

2023-05-22 04:12:34

質問

私はJavaの例外処理について十分な基本的理解を持っていると思っていましたが、最近いくつかのコードを読んでいて、いくつかの混乱と疑念を抱くようになりました。ここで取り上げたい私の主な疑問は、次のような Java メソッド宣言で、いつ throws を使用すべきか、ということです。

    public void method() throws SomeException
    {
         // method body here
    }

同じような投稿をいくつか読んだところ、私は を投げる は一種の宣言として使われていて SomeException がメソッドの実行中に投げられる可能性があるという宣言として使用されます。

私の混乱は、次のようないくつかのコードからきています。

     public void method() throws IOException
     {
          try
          {
               BufferedReader br = new BufferedReader(new FileReader("file.txt"));
          }
          catch(IOException e)
          {
               System.out.println(e.getMessage());
          }
     }

を使いたい理由はあるのでしょうか? を投げる を使いたい理由はありますか?IOExceptionのような基本的な例外処理を行うだけであれば、try/catchブロックが必要なだけだと思われます。

どのように解決するのですか?

例外タイプをキャッチしている場合、それを再スローするのでなければ、スローする必要はありません。 あなたが投稿した例では、開発者はどちらか一方を行うべきで、両方を行うべきではありませんでした。

一般的に、例外に対して何もするつもりがないのであれば、それをキャッチするべきではありません。

最も危険なことは、例外をキャッチして何もしないことです。

例外を投げることが適切な場合についての良い議論は、こちらです。

いつ例外を投げるべきか?