小弟刚学java,看到异常中的throws语句后就被挡住了。我始终看不懂 throws 语句的作用是什么,故更搞不懂什么时候用,怎么用。而书上的例子都千篇一律的举下面的例子:import java.io.*;class test_throws

 public static  void main(String args[])  throws IOException //书上的例子都在这里打主意,始终搞不懂
 { 
  ....
 }
}大家能不能帮我举一个另外类型的例子,比如 a=2/0  这些简单直白的例子说明 throws 语句的作用以及用法?谢谢!

解决方案 »

  1.   

    意思是main方法内可能会抛出IOException异常
    main方法并没有处理该异常,而是把它丢出去由调用它的人来处理(也就是给jvm处理)
      

  2.   

    程序是老板让你做的事, 异常就是做事过程中遇到的问题, 如果问题你能够处理, 那么你可以自己处理, 如果不能处理的问题, 定义出来, 抛给老板. throws就是抛给老板的问题了public void a() throws 丢给老板的Exception{
      try{
        //做老板给你的事情
      } catch(你能处理的Exception e){
        //处理你能解决的问题
      } finally {
        //不管问题有没有发生, 都要处理的工作
      }
    }
      

  3.   

    main方法没有处理异常,它抛出给调用它的来处理,但这里没有任何其它调用它,这里是书上的例子的一种懒的方法。如果有异常就直接抛出给控制台了。
    void getInt() throws Exception{
     int i = 2/0;
    }
    void getEx(){
     try{getInt();}catch(Exception e){e.printStackTrace();}
    }
      

  4.   

    3楼好比喻!
    4楼正解,不过可以再直观一点:
    void getInt() throws Exception{
      try{
        int i = 2/0;
      }
      catch(Exception e){ }
    }
      

  5.   

    程序是老板让你做的事, 异常就是做事过程中遇到的问题, 如果问题你能够处理, 那么你可以自己处理, 如果不能处理的问题, 定义出来, 抛给老板. throws就是抛给老板的问题了
    ...............................................................
    能举一下例子,哪些是无法捕获的异常??
      

  6.   

    java.lang.Exceptio类
    到API看一下,它的派生类有很多很多,如ClassNotFoundException, AlreadyBoundException, ApplicationException, AWTException等等等等那么一个方法中的所有catch(异常类型参数)
    如果只有ClassNotFoundException,AWTException这两个,那么其他的异常它就没有捕获,那么就必须throws了而Exceptio类的异常是一个"总"的异常,它可以包括所有种类的异常...
      

  7.   

    不是无法捕获,而是你无法处理的,就往上面抛``如果你能够处理的,比如你读取文件时捕获了一个io异常,你可以返回到一个页面,告诉用户“出了XXXXX问题,请XXXXXX”。
      

  8.   

    java中有种异常叫被检查的异常,IOException就属于这种,进行IO操作的时候必须对可能产生的异常进行处理,否则编译不通过,在main()方法中抛出异常,就是一种处理方式,两外一种是把可能产生异常得代码用try{}catch(){}包起来
      

  9.   

    如果按照:kaiseryuanch(中国。杨梅林)提供的程序段,我下面都有try...catch了还要throws干什么啊?!谢谢!
      

  10.   

    1楼到4楼的解释容易引起误解
    try catch finally和throw不是在一个方法里的
    throw用来抛出异常,throw所在的方法要写throws Exception,但是这个方法里就不会用try catch了try catch所在的方法一定是try中有用到有throws Exception的方法的!这个要记住。而且,有throws Exception的方法被调用,不放到try中编译器会报错的
      

  11.   

    public static  void main(String args[])  throws IOException 
    把主方法产生的异常抛给JVM,不用我们处理了,这么做简单,但不可控
     int i = 2/0;
    当然是用来产生异常了
      

  12.   

    一个方法  ,如果里面的实现会产生异常,那就可以用  throws 抛出这个异常,你可以在程序的其他地方调用这个方法时,利用try catch 来扑捉异常。
    例:
        public void f() throws  SQLException {
        ...
        }
    在其他地方调用这个方法时可以扑捉异常
        ....
        try {
           f();
         } catch (SQLException e) {
         ...
         }
      

  13.   

    其实throws就是把异常扔出去给别人处理,自己不用处理