我发现定义一个可能抛出运行时异常的方法时,在方法名后面是不写throws关键字来显示地将异常抛给上一层调用者的,那么这个运行时异常时如何处理的呢?是系统自动将异常递归抛给上一层调用者直到遇到处理者还是说不抛出给上层调用者而直接由jvm处理异常?

解决方案 »

  1.   

    try{
    ...
    }catch(){
    ...
    }还是一样捕获,不过就是捕获RuntimeException或者直接Exception再或者RuntimeException的子类
      

  2.   

    Java对异常(Exception)的处理方法分为两类:
                        一类将异常的处理递交给当前方法的调用者去处理,称为 throws a Exception,
              另一类则在方法中使用try/catch/finally语句自己处理异常。
      

  3.   


    这个要看需求的,因为runtime的exception本来就是不可预知的,不可能因为有这种可能,就每个都来个try catch如果是web的,配个500的页面,出错时自动转到那个告诉用户系统出错,联系管理员的那个页面就是一种解决方案,不会把无意义的exception直接暴露给用户又比如一些小的j2se的工具,其实直接抛exception给用户也无所谓,用户一看就知道出什么错了,比如文件路径,网络连接之类的
      

  4.   

    如果没有try  catch则会抛出JVM
      

  5.   

    我知道RuntimeException也可捕获,但是我是说如果既不用try catch捕获,定义方法时也不用throws抛出,那么这个runtimeException是怎么处理的?比如下面的例子:class MyRuntimenException extends RuntimeExcepion {
            public MyRuntimenException() {
                super();
            } 
            public MyRuntimenException(String msg) {
                super(msg);
            } }class Test {
         public void test {
             throw new MyRuntimenException ();     }}像test方法里出现了这个运行时异常,系统是如何处理的?
      

  6.   

    谁调用Test就谁处理,要是那个都不处理,就一直往上传,直到最顶,然后就JVM处理JVM处理就直接给你停下来
      

  7.   

    懂了,看来checked异常和unchecked异常处理机制一样,只不过unchecked异常不捕获时不用程序员自己显式throws exception而已,系统自动抛出