import java.io.*;
class BBB
{
public static void main(String args[])
{
try
{
throw new IOException();
}
catch(IOException q)
{
System.out.println("IOE");
}
catch(Exception e )
{
   System.out.println("Exception");   //这句为什么不执行,闷。
}
}
}

解决方案 »

  1.   

    catch住一个IOException 处理了 然后就退出try-catch语句块啊
      

  2.   

    catch难道匹配到一个就不往下找了吗??
      

  3.   

    晕啊  你都catch到了  干嘛还要匹配啊一般是这样  你抛出多个exception  要是同时处理的话  那么就catch他们的父类  从而一起处理
      

  4.   

    都被 IOException 捕获了啊。假如你的代码中会抛出 IOException,也会抛出 SQLException 的话,
    那就会根本不同类型的异常由不同的异常处理块进行处理。try {
      ...
      ...
    } catch (IOException e1) {
        System.out.println("IOException");
    } catch (SQLException e2) {
        System.out.println("SQLException");
    }异常只能被一个 catch 所捕获,因此越父类异常都应该写在子类异常的后面。比如说,在普通的文件读写操作中,会同时抛出 FileNotFoundException 和 IOException,
    经查询 API DOC 可以看出 IOException 是 FileNotFoundException 的父类异常。因此写代码可以写成:try {
        ...
    } catch (FileNotFoundException e1) {
        ...
    } catch (IOException e2) {
        ...
    }但我们不能写成下面这样:try {
        ...
    } catch (IOException e2) {
        ...
    } catch (FileNotFoundException e1) {
        ...
    }因为如果在 try 中抛出 FileNotFoundException 的话,首先会被 IOException 的 catch 块所捕获,
    FileNotFoundException 的 catch 块永远执行不到。当然了,如果不需要在不同的异常 catch 块中写一些健壮性代码的话,FileNotFoundException 和
    IOException 可以只使用 IOException catch 块,甚至可以直接使用 Exception 的 catch 块。
      

  5.   

    每次只能抛一个异常,catch也只是一次不然还叫catch吗?叫check更合适