プロが教える店舗&オフィスのセキュリティ対策術

以下のソースをコンパイルすると,

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();

}

}

}

A 回答 (2件)

つまり


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

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

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

お礼日時:2008/02/03 18:12

public void showManualPage() throws URISyntaxException, IOException {


} /* これはコンストラクタではなく普通のクラスのメソッド */

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

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

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

お礼日時:2008/02/03 18:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています