- ベストアンサー
「例外 *** は対応する try 文の本体ではスローされません。」について。
以下のソースをコンパイルすると, simulator/showManualPage.java:21: 例外 java.net.URISyntaxException は対応する try 文の本体ではスローされません。 } catch (URISyntaxException ex) { ^ simulator/showManualPage.java:23: 例外 java.io.IOException は対応する try 文の本体ではスローされません。 } catch (IOException ex) { ^ とエラーを返されます。 調べたところ、スローされるはずのない例外をキャッチしようとしている、というエラーだとは分かりましたが、スローは書いているので原因が分かりません。 やり方が悪いのでしょうか? package simulator; import java.awt.event.*; import java.awt.Desktop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; public class showManualPage implements ActionListener { public void showManualPage() throws URISyntaxException, IOException { // Get Desktop Object Desktop desktop = Desktop.getDesktop(); desktop.browse(new URI("http://google.co.jp")); } public void actionPerformed(ActionEvent event) { try { // Run browser new showManualPage(); } catch (URISyntaxException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
つまり public void showManualPage() throws URISyntaxException, IOException { をコンストラクタにするため voidを取り public showManualPage() throws URISyntaxException, IOException { とする。(コンストラクタにvoidを付けてはいけません) 参考までに、クラス名は、大文字で始めたほうがわかりやすいです。 つまり3箇所の文字列showManualPageは、すべてShowManualPageに変更しましょう。
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
public void showManualPage() throws URISyntaxException, IOException { } /* これはコンストラクタではなく普通のクラスのメソッド */ new showManualPage(); /* ← コンストラクタの実行を指定している */ newを取っ払ってインスタンスのメソッドを実行する形にするか もしくは、コンストラクタを定義するなり,今のメソッドを書き換えればコンパイルエラーはなくなる
お礼
newを消したらコンパイル通りました、ありがとうございました。
お礼
こちらでもコンパイル通りました、ありがとうございました。 今後クラス名にも注意します。