为什么有些方法可以这样写:声明了异常,却不抛出异常.
也就是说一个方法用throws声明了异常,而在此方法内部却没有throw 来抛出异常,这是什么意思?

解决方案 »

  1.   

    也就是中间语句产生的异常由使用该方法的地方去try
      

  2.   

    throws 就是发生异常不处理了里面还用throw干什么??
      

  3.   

    可能是该方法调用了会抛出异常的方法,所以在该方法的方法体中才看不见throw语句,比如:public void read() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
    }就是一个例子。
      

  4.   

    本来read()方法应该处理这个IOException,也就是使用try/catch结构,但是它没有这样,而是把异常抛给了上一级。
      

  5.   

    好好看看API,很多方法的声明都是抛异常的,只是你用的时候不用显示的写出来而已;
    典型的有,I/O里面的异常,线程里面的异常.....
      

  6.   


    有的时候是编译器提示您的异常需要您捕获,但是不一定有异常,有些时候编译器没有提示的地方没准也会出现异常,比如把String转换成int 如果String全是字符组成的,转化int肯定有异常啦,但是这个编译器不会提示您有异常的
      

  7.   

    使用throws生命异常,表示该方法会的调用有异常产生,让调用者去捕获.
    try-catch块是程序给异常做了捕获和响应的处理了.如果程序不做处理JVM则会去捕获.public Test() throws RepletException { 
    try { 
    System.out.println("Test this Project!") 

    catch (Exception e) { 
    throw new Exception(e.toString()); 

    } throws是用来声明一个方法可能抛出的所有异常信息 
    throw则是指抛出的一个具体的异常类型。 
    通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。 
    throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法; 
    throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。