运行时异常RunTimeExcepption

前几天写代码的时候,遇到一个需求,保存的时候如果重名则不执行保存,并抛出异常。但是当我抛出的不是运行时异常的时候,这个异常就需要一层层的捕获。就像下面这样:

ExceptionTest .java

package com.lz.utils;

public class ExceptionTest {
   public static void testRunTimeException() throws Exception {
      //throw new MyRunTimeException("运行时的异常!");
       throw new Exception();
   }
}

Test.java

package com.lz;

import com.lz.utils.ExceptionTest;
import com.lz.utils.GetDBPhysicDesignTxt;

public class Test {
public static void main(String[] args) throws Exception {
    ExceptionTest.testRunTimeException();
}
}


或者这样

ExceptionTest.java
package com.lz.utils;

public class ExceptionTest {
   public static void testRunTimeException() {
      //throw new MyRunTimeException("运行时的异常!");
       try {
        throw new Exception();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
   }
}

但是从一个程序员的角度,考虑,重名属于运行后进行操作才产生的异常,正常情况下应该抛出运行时异常,并且公司我最膜拜的架构师【据说是离神最近的男人】是已经封装好了异常,自定义运行时异常,因此就使用了运行时异常实现:
代码如下:

MyRunTimeException.java
自定义的运行时异常类:

package com.lz.utils;

public class MyRunTimeException extends RuntimeException {
    public MyRunTimeException(String info) {
        super(info);
    }

}

ExceptionTest.java

package com.lz.utils;

public class ExceptionTest {
   public static void testRunTimeException() {
      throw new MyRunTimeException("运行时的异常!");
   }
}


使用自定义运行时异常后,发现省事好多,异常并不需要一级一级的向上抛出或者在当前类捕获。

借助这个案例分析了下运行时异常的特点:

  • A: 运行时期异常的概述:
    • RuntimeException和他的所有子类异常,都属于运行时期异常。
      NullPointerException,ArrayIndexOutOfBoundsException等都属于运行时期异常.
  • B:运行时期异常的特点
    • a:方法中抛出运行时期异常,方法定义中无需throws声明,调用者也无需处理此异常。
    • b:运行时期异常一旦发生,需要程序人员修改源代码。
      设计原因:
      运行异常,不能发生,但是如果发生了,程序人员停止程序修改源代码
      运行异常: 一旦发生,不要处理,请你修改源代码,运行异常一旦发生,后面的代码没有执行的意义

这就是运行时异常的总结,就问还有谁。


Reprint please specify: Blog4Jun 运行时异常RunTimeExcepption