public class try
{
public static void main(String[] args)
{
try
{
if(true)
throw new A();
if(true)
throw new B();
}
catch( A | B e)
{
e.doit();
}
}
}
class A extends Exception
{
public void doit() {}
}
class B extends Exception
{
public void doit() {}
}
これはコンパイルされません
18: error: cannot find symbol
e.doit();
^
symbol: method doit()
location: variable e of type Exception
変数は、実際の型ではなくe
型として終了するようです。これは、コンパイルの型でコンパイラがどのような種類がスローされるかを知らないため、論理的に見えます。ただし、共通の基本クラスから派生させたり、共通のインターフェイスを実装したりするException
ことなく、これを機能させる方法はありA
ますか?B