人生不如意十有八九。在打Core Java里面的例子的时候总是一遍就过,但是实际上只要是自己想着动手去打造自己想要的东西,异常的状况也是十有八九的。

  在Java中会使用异常处理的错误捕获机制处理这些异常。假设在Java程序运行的过程中出现了一个错误,而且由于这个错误是的某些操作并没有完成,所以程序应该:

    ① 返回到一种安全状态,并能够让用户执行一些其他的命令。

    ② 允许用户保存所有操作的结果,并以妥善的方式终止程序。

  而通常,要想做到以上这两点也是没那么简单的。

  一般我们用这几个关键字对产生异常的程序进行善后:try、catch、finally、throws,结构如下:

try{

}catch(ExceptionType e){

}finally{

}

  在Java程序设计语言中,异常对象都是派生于Throwable类的一个实例,如果我们对Java内置的异常类不能满足,还可以自己去创建异常类(一定要继承Throwable类)。

  Java异常层次结构的简化示意图如下:

    -Throwable

      -Error

      -Exception

        -IOException

        -RuntimeException

  需要注意的是,所有的异常都是由Throwable继承而来的,但在下一层就会被分解为两个部分:Error和Exception。

  Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。应用程序不应该抛出这类型的对象。如果出现了这样的内部错误,除了通告给用户,并尽力使程序安全地终止以外,再也无能为力了。

  而Exception层次又分解为两个分支:RuntimeException和其他异常。

  其他异常类似于:

    ① 试图在文件尾部后面读取数据

    ② 试图打开一个不存在的文件

    ③ 视图根据给定的字符串查找Class对象,而这个字符串标识的类并不存在。

  有句话是这么说的,“如果出现RuntimeException异常,那么就一定是你的问题”(《Core Java I》),那么常见的RuntimeException有哪些呢?

  -java.lang.NullPointerException

    “访问null指针”,简单的说就是调用了未经初始化的对象或者不存在的对象了,或者访问在不允许null出现的地方,一般的解决方法就是实例化或者想办法把null消去。

  -java.lang.ClassNotFoundException

    "指定类不存在",简单的说就是你要调用的类在所有的包里面都找不到,这个错误一般在引用其他jar中的类但是又没有导入这个jar发生的比较多,一般的解决方法就是给出这个类或者引入包含这个类的jar就好。

  -java.lang.ArithmeticException

    "数学运算异常",简单说就是你的数学式子有错,像是除于0之类的错误,这种错误改过来就好。

  -java.lang.ArrayIndexOutOfBoundsException

    "数组访问越界",简单的说就是访问到了定义的数组之外的地方去了,这种错误一般检查一下自己的数组的length和调用错误的下标就可以找到问题了。

  -java.lang.IllegalArgumentException

    "方法的参数错误",简单的说就是在调用方法的时候参数传错了,这种错误需要好好地检查一下方法所定义的参数,还有特定方法所需的特定数据的范围,像是g.setColor(int red, int green, int blue)这个方法中的三个值,如果传递的参数是在0~255值之外的,就会报这个错误。

  -java.lang.IllegalAccessException

    “没有访问权限”,简单的说就是当没有一定的访问权限去调用一个类、方法或者变量的时候就会出来这个错误。

  -java.lang.IncompatibleClassChangeError

    "不兼容的类变化错误",就是说对类进行了不兼容的转换。

  -java.lang.InstantiationError

    "实例化错误",当一个应用视图通过Java的new操作符构造一个抽象类或者接口的时候就会触发这个异常。

  -java.lang.LinkageError

    "链接错误",该错误及其所有子类指示某个类依赖于另一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发的错误。

  -java.lang.StackOverflowError

    "堆栈溢出错误",当一个应用递归调用的层次太深而导致堆栈溢出时抛出异常,给递归的深度打上一个下限或者上限即可。

  

  

参考:

https://blog.csdn.net/jarvan_song/article/details/52584608

《Java核心技术I卷》

Java异常之RuntimeException的更多相关文章

  1. java异常——RuntimeException和User Define Exception

    1.RuntimeException public class RuntimeException { public static void main(String[] args) { // TODO ...

  2. Java checked 异常 和 RuntimeException(运行时异常)

    目录 一.运行时异常 1.什么是RuntimeExceptioin 2.运行时异常的特点 3.如何运用运行时异常 二.运行时异常和ckecked异常的区别 1.机制上 2.逻辑上 一.运行时异常 1. ...

  3. “全栈2019”Java异常第十九章:RuntimeException详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  4. Java异常&&RuntimeException异常

    Java异常可分为3种: (1)编译时异常:Java.lang.Exception (2)运行期异常:Java.lang.RuntimeException (3)错误:Java.lang.Error ...

  5. Java checked异常 和 RuntimeException

    RuntimeException RuntimeException是非常特殊的子类,你可以不用throw和throws. 哪怕你throw了,也没必要throws,即使你throws了,调用者也没必要 ...

  6. 浅谈java异常[Exception]

    学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...

  7. Java异常体系及分类

    上图是基本的java异常体系结构. 主要分为2大类:Error和Exception 1.Error:描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象,一般是由虚拟 ...

  8. Java异常之自定义异常

    哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...

  9. 第11章 Java异常与异常处理

    1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...

随机推荐

  1. 3. 关于sql注入的综合题

    关于sql注入的综合题                          ----------南京邮电大学ctf : http://cms.nuptzj.cn/ 页面上也给了好多信息: 根据这个sm. ...

  2. pure css做的手机页面

    <!doctype html> <html> <head> <meta http-equiv="Content-type" content ...

  3. LeetCode: 371 Sum of Two Integers(easy)

    题目: Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. ...

  4. 黑科技抢先尝(续) - Windows terminal中WSL Linux 终端的极简美化指南

    目录 修改默认源,为apt-get安装提速 安装python 和 python pip 安装 zsh 安装powerline-font中的特定字体 安装powerline-shell 修改~目录下的配 ...

  5. STL——queue

    1.初始化 需要头文件<queue> queue<int>que; 2.成员函数 C++队列Queue类成员函数如下: back()返回最后一个元素 empty()如果队列空则 ...

  6. ue4 修改3dui内容

    修改text内容1 修改text内容2 上面的方法是对外公开某个控件,然后再蓝图中直接改控件内容 另一种更好的方法时,在控件上新建public变量,控件绑定到这个变量上,由蓝图直接改变这个public ...

  7. Unity 5着色器系统代码介绍(下)

    http://forum.china.unity3d.com/thread-25738-1-10.html 上一篇对着色器系统的工作原理做了介绍,现在我们将继续深入,将目光聚焦在标准着色器的光照函数. ...

  8. 洛谷P1368 均分纸牌(加强版)

    P1368 均分纸牌(加强版) 题目描述 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,纸牌总数必为 N 的倍数.可以在任一堆上取1张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取 ...

  9. 基于SSM搭建网站实现增删改查

    网站源码地址:https://github.com/MyCreazy/BasicOperateWebSite.git 使用maven搭建网站的时候,记得选用war包格式,有时候maven包没有引用进来 ...

  10. github版本库使用详细教程(命令行及图形界面版)

    Git是一个分布式的版本控制系统,作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选 ...