#### 1. 定义类 MyException

n 声明类 MyException，并扩展 Exception

n 声明构造方法 MyException ()

n 在构造方法中调用 Super（）来完成构造方法实现

#### 2. 定义类 YourException

n 声明类 YourException，并扩展 MyException

n 声明构造方法 YourException ()

n 在构造方法中调用 Super（）来完成构造方法实现

#### 3. 声明类 LostException

#### 4. 声明类方法 someMethod2 ()

#### 5. 在方法 someMethod2 ()中创建一个 YourException 并抛出

#### 6. 声明类方法 someMethod1 ()

#### 7. 调用方法 someMethod2 ()并将此代码至于 try 代码块中

#### 8. 在 finally 代码块中创建一个 MyException 实例并抛出

#### 说明：由于方法 someMethod2 ()对方法 someMethod1 ()抛出的意外没有进行捕捉，且又抛出了新的意外，因此，在方法的声明中必需抛出意外 MyException, YourException。

#### 9. 添加 main（）

#### 10. 调用方法 someMethod1 ()并将此代码至于 try 代码块中

#### 11. 在 catch 代码块中捕捉意外 MyException 进行处理。

#### 12. 在 catch 代码块中捕捉意外 YourException 进行处理。

#### 说明：由于 YourException 是 MyException 的子类，因此方法 someMethod1（）抛出意外 YourException 也被自动向上转型为 MyException 进行捕捉，所以对于 YourException 的捕捉将没有任何结果。

// LostException.java

//用来演示意外捕捉中由于类型匹配问题造成的意外丢失

class MyException extends Exception

{

MyException ()

{

super ("My Exception");

}

}

class YourException extends Exception

{

YourException ()

{

super ("Your Exception");

}

}

class LostException

{

public static void main (String [] args)

{

try

{

someMethod1 ();

}

catch (MyException e)

{

System.out.println (e.getMessage ());

}

catch (YourException e)

{

System.out.println (e.getMessage ());

}

}

static void someMethod1 () throws MyException, YourException

{

try

{

someMethod2 ();

}

finally

{

throw new MyException ();

}

}

static void someMethod2 () throws YourException

{

throw new YourException ();

}

}