模块java.base
软件包java.lang
参考链接:
https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/lang/RuntimeException.html
继承关系:Object→Throwable→Exception→RuntimeException
异常处理参考
https://www.cnblogs.com/jpwz/p/5669522.html
Java中所有异常的父类是Throwable类,在Throwable类下有两大子类:
一个是Error类,指系统错误异常,例如:VirtualMachineError 虚拟机错误,ThreadDeath 线程死锁。一般如果是Error类的异常的话,就是程序的硬伤,就好比是工厂里断水断电,机器损坏了。
另一个是Exception类,指编码、环境、用户操作输入等异常,这个是比较常见的异常类,Exception类下面又有两个子类,RuntimeException 非检查异常和检查异常,非检查又称为运行时异常,在RuntimeException异常中有几个常见的子类,例如:
InputMismatchException 输入不匹配异常
ArithmeticException 算术运算异常
NullPointerException 空指针异常
ArrayIndexOutOfBoundsException 数组下标越界异常
ClassCastException 类型转换异常
检查异常中的子类有:
IOException 文件异常
SQLException SQL数据库错误异常
在实际的开发中,处理异常一般使用以下三种方式:
一、使用try-catch语句块捕获和处理异常
二、使用throws关键字声明将要抛出何种类型的异常
三、自定义异常类
有的时候我们抛出的异常在Throwable类中没有定义,就需要我们自己自定义一个异常的类,比如我们实际开发中需要用到一个“开车别喝酒”的异常,我们就可以定义一个这样的异常类来处理我们项目中需要处理的异常。
另外,在很多源码的方法实现中都只有一行throw new RuntimeException("Stub!");
这样定义的方法,表示在程序执行的时候,实际由android rom里面相同的类来执行。这是因为这些方法或者类是被Android SDK隐藏的,出于安全或者某些原因,这些API不能暴露给应用层的开发者,所以编译完成的.jar包里会把这些API隐藏掉。
参考链接:
https://www.cnblogs.com/lucktian/p/7016383.html