比如:
Integer i = Integer.parseInt("abc");
这条语句不会要求用try/catch
但它是要抛异常的,而且用try包围起来也能catch抛出的异常
-------
如果我自己写一个抛异常的方法,在调用的时候编辑器就要求必须写try/catchpublic static void testTry() throws Exception{
throw new Exception("xxx");
}这是为什么?

解决方案 »

  1.   

    try catch和throws是两种处理方式
      

  2.   

    try catch抓异常并处理throws只是抛出异常
      

  3.   


    public static void main(String[] args) {
    Integer i = Integer.parseInt("abc");
    try {
    testTry();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    public static void testTry() throws Exception{
    throw new Exception("xxx");
    }
      

  4.   

    额。。已经解决了!
    自己动手~丰衣足食啊
    RuntimeException不用强制try/catch
      

  5.   

    java 的异常分两大类,RuntimeException 及其子类不要求捕捉而其它的异常要求捕捉随便举几个 RuntimeException 子异常,有:数组越界异常、空指针异常、0作除数异常非RuntimeException 异常有:Socket异常、IO异常等
    对比一下我们就会发现,RuntimeException 是在程序中可以完全避免的,比如数组越界异常,只要我在程序里作个判断,如果要访问的数组元素下标和数组的长度作一下比较就知道会不会越界,再比如空指针异常,如果在访问对象时判断一下对象的变量是否为空就可以了。而非RuntimeException 则是程序无法避免的,比如IO异常,你的程序正在读一个文件,而这个文件所在磁盘出现了坏道,这就必然会引发IOException,这是不是靠编程高手编写完美的程序就可以法避免得了的,程序所能做的只有出现异常之后怎么处理的问题。
      

  6.   

    说明在Integer.parseInt("abc")的底层没有throw什么exception
    又或者是Integer.parseInt("abc")的里面已经把已知预期的exception捕获了
    也可能是里面抛的是RuntimeException的继承异常 无需强制捕获
      

  7.   

    Integer i = Integer.parseInt("abc");
    是运行时异常,不用强度try catch而你自己定义的方法是非运行时异常必须使用try catch 处理  或者  往上抛
      

  8.   

    异常分为二大类,  error(错误) , exception(异常) , 
    exception(异常) 又分为二类 (CheckedException)检查异常,(RuntimeException)运行异常,  
    error 是不能处理的,比如说: 程序运行过程中 ,停电了Exception(异常)解释如:
      

  9.   

    Exception分受检查的异常(CheckedException)和运行时异常(RuntimeException)
    受检查的异常是指,可以在程序编译期间确定会抛出异常的代码,这些异常由继承Exception的类来指定
    比如IOException,为什么所有流操作,文件操作会抛出IOException,因为在编译时就能确定,一个文件不正常关闭时,应该进行的处理而运行时异常是指无法在编译期间确定的异常,只有在程序运行时才能明确的异常
    比如Integer.parseInt函数,由于不确定传入的值是不是有效的数值,这个数值只有在运行中才会被明确,所以它是一个RuntimeException
      

  10.   

    悄悄地问一句:Error可以catch吗?
      

  11.   

    Error主要是虚拟机内部错误或者是资源耗尽,典型的OutofMemoryError,StackoverFlowError,即使你捕获了又有什么用,你根本就没办法处理…
      

  12.   

    error是可以捕获的,但是它既不能被RuntimeException捕获,也不能被Exception捕获,因为它不属于它们的子类,不过可以用所有异常超类Throwsable来捕获,不过官方并不建议捕获这类异常,如果程序在任何时候发生这种异常,那么应该立刻终止程序。