public class Test
{
public static void main (String [] args) throws IOException
{
         if (args[0] == "hello") throw new IOException();
      }
}这个程序,自己运行了一下没问题。但是他抛出的异常在哪捕获呢?main的上层再也没有其他方法了啊?

解决方案 »

  1.   

    这么写行吗,你可以新建一个异常类MyException
    public class Test
    {
    public static void main (String [] args) throw new MyException(Exception e)
    {
             if (args[0] == "hello") throw new IOException();
          }
    }
    class MyException{
     private Exception e;
     public MyException(){};
     public MyException(Exception e){
       if(e instanceof IOException)
         // add ur code here 
         throw new IOException;
       if(e instanceof FileNotFoundExcepiton)
         // do something
         
     }
    }
      

  2.   

    晕一下楼上的代码!声明抛出异常和实际抛出异常, 一个是throws, 一个是throw, 不能混淆, 应该是:public static void main(String[] args) throws Exception {
      throw new Exception("I am thrown");
    }
    main()方法当然可以抛出异常, 用户能看到的异常信息最终都是通过main()方法抛出来的.楼上有人说"主方法可以抛例外但不推荐:一旦发现例外则后面的代码无法继续", 恰恰相反, 我认为让main()方法抛出异常有时是一个不错的选择, 特别是在程序调试过程中.处理异常的一个原则是: 如果你不知道如何恰当地处理某个异常, 就把它交给上层环境. 而main()环境则是所有环境的上层.