如:public static int parseInt(String s)
                    throws NumberFormatException
int i=0;
int i=Integer.parseInt("111");
需要这样?
int i=0;
try {i=Integer.parseInt("111");
}
catch(NumberFormatException e)
{//i=0;
}
问:java api 中throws Exception都需要try  catch 吗?
请高手指点一下

解决方案 »

  1.   

    Runtime的异常不需要显式的try  catch
    checked异常需要try catch  或者直接 throws 
      

  2.   

    只有RuntimeException派生的异常可以不予理睬,其它所有的异常要么必需try/catch,要么所在函数必需声明为抛出同样的异常。
    而对于后者来说,只不过把异常的处理推给了调用者而已,换句话说,迟早还是得有个函数予以处理。
      

  3.   

    问:java api 中throws Exception都需要try  catch 吗?
    答:如果throw的是RuntimeException这条线上的,那么编译器不会强制你try catch,不过一旦出现,你的程序就垮了。
    因此最好在容易发生异常的地方,try一下
    int i=0;
    try {i=Integer.parseInt("111");
    }
    catch(NumberFormatException e)
    {//i=0;
    }
      

  4.   

    JAVA中所有的异常均继承了Exception类
    异常分为3种:
    1、非受查异常(unchecked exception),又称运行时异常(Runtime Exception)
    非受查异常又称为此类异常不需用try...catch捕获
    常见的非受查异常ArithmeticException\NullPointerException\ArrayIndexOutofBoundsException\SecurityException等
    2、受查异常(checked exception)
    程序中有可能产生受查异常的地方,如进行IO操作、网络操作、线程操作、数据库操作时
    必须使用try...catch进行捕获
    捕获后也可以用throw重新抛出
    用在catch之后,进行清理、收尾工作
    无论try...catch中如何,finally中的语句均会执行
    return语句也不妨碍finally执行
    System.exit(0)可以不执行finally
    3、自定义异常
    继承Exception类即可throw用于抛出异常
    throws用于在声明方法时声明此方法可能抛出的异常
      

  5.   

    JavaHurricane(Java飓风) 说得很细了其实就是这样。
    throw和throws是两个语法
    用throws的,必须try catch或者再次throws
    而用throw的,就没有必要了,因为如果人家不给出源代码的话,
    用throw的Exception根本就无从得知,也就无法catch
    一般这一类的Exception继承自RuntimeException,你硬是要继承Exception也是可以的用throw抛出继承自RuntimeException的异常,一般用于强化方法使用约定。
    关于这个问题,有一个中国作者写的 好像叫java高效编程吧,第一张详细论述了这个问题
    个人觉得非常好,你可以看看
      

  6.   

    NumberFormatException 属于非检查性异常,就是说不需要你自己去try catch.
    并且即使一旦出现这种异常,也认为是设计错误,是程序员的责任,是可以避免的,例如在把参数传进你的方法前,先判断参数是否为数字。如果因为不是数字而产生了NumberFormatException,说明你程序的CHECK PARAMETER的工作没做好,是你的责任。