電子書籍の厳選無料作品が豊富!

他ファイルで定義された自作例外の投げ方と受け方を
教えて下さい。

// ------ Class.java --->
import java.io.*;
public class Class1
{
 static Class2 oClass2;
 public static void main (String[] args)
 {
  try {
   oClass2 = new Class2();
   System.out.println("main");
   oClass2.vfFunc();
  } catch (MyException e) {
   System.out.println("catch MyException");
  } catch (Exception e) {
   System.out.println("catch Exception");
  }
 }
}
// <------ Class1.java ---

// ------ Class2.java --->
import java.io.*;
public class Class2
{
 public Class2()
 {
  System.out.println("Class2コンストラクタ");
 }
 public void vfFunc()
 {
  System.out.println("Class2 vfFunc");
  throw new MyException();
 }
 public class MyException extends Exception
 {
  public MyException()
  {
   System.out.println("MyException");
  }
 }
}
//<------ Class2.java ---

A 回答 (1件)

「投げ方」と言っているのは、Class2.java のコンパイルが通らないことを指して


いるのですね?

例外を throw するメソッドに throw 句をつけましょう。

>  public void vfFunc()
  ↓
  public void vfFunc() throws MyException

「受け方」と言っているのは、Class1.java のコンパイルが通らないことを指して
いるのですね?

だって、throw される例外が Class2 の inner クラスじゃないですか。

>   } catch (MyException e) {
   ↓
   } catch (Class2.MyException e) {

ということでいかが?  
    • good
    • 0

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