こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

「例外 *** は対応する 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();

}

}

}

投稿日時 - 2008-02-02 15:53:33

QNo.3737264

ffd

すぐに回答ほしいです

質問者が選んだベストアンサー

つまり
public void showManualPage() throws URISyntaxException, IOException {
をコンストラクタにするため voidを取り
public showManualPage() throws URISyntaxException, IOException {
とする。(コンストラクタにvoidを付けてはいけません)

参考までに、クラス名は、大文字で始めたほうがわかりやすいです。
つまり3箇所の文字列showManualPageは、すべてShowManualPageに変更しましょう。

投稿日時 - 2008-02-02 20:24:54

お礼

こちらでもコンパイル通りました、ありがとうございました。
今後クラス名にも注意します。

投稿日時 - 2008-02-03 18:12:09

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

public void showManualPage() throws URISyntaxException, IOException {
} /* これはコンストラクタではなく普通のクラスのメソッド */

new showManualPage(); /* ← コンストラクタの実行を指定している */

newを取っ払ってインスタンスのメソッドを実行する形にするか
もしくは、コンストラクタを定義するなり,今のメソッドを書き換えればコンパイルエラーはなくなる

投稿日時 - 2008-02-02 16:13:57

お礼

newを消したらコンパイル通りました、ありがとうございました。

投稿日時 - 2008-02-03 18:09:13

あなたにオススメの質問