人生不如意十有八九。在打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. 面试问题 ---C#中的委托

    一.C#委托是什么的? 在正式介绍委托之前,我想下看看生活中委托的例子——生活中,如果如果我们需要打官司,在法庭上是由律师为我们辩护的,然而律师真真执行的是当事人的陈词,这时候律师就是一个委托对象,当 ...

  2. Python服务Debian打包新思路

    此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Debian 打包一直是比较冷僻的技术,大部分同学都不会接触到它. 但是我们 Debian 服务器上安装的各 ...

  3. Unity 5.6中的混合光照(上)

    https://mp.weixin.qq.com/s/AbWM21sihHw5pFdMzENDPg 在Unity 5中,光照得到了很大的改进.现在,创建高度逼真的游戏已成为可能.但是,出于对性能的考虑 ...

  4. 51nod1153(dfs/单调队列)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1153 题意:中文题诶- 思路:一个比较简单的方法是dfs隐式 ...

  5. 黑马Spring学习 bean

  6. centOS-7.5上安装redis-5.0.0

  7. render函数和redirect函数的区别+反向解析

    render函数和redirect函数的区别+反向解析 1.视图函数:一定是要包含两个对象的(render源码里面有HttpResponse对象)   request对象:----->所有的请求 ...

  8. hdu2177----取(2堆)石子游戏

    威佐夫博弈博弈论 直接模拟即可 值得一提的是这道题几乎网上所有题解都没有考虑只从小堆取得情况 所以在类似 19 20这种数据出现时,他们都是错误的 只输出了 1 2 而没有 12 20 #includ ...

  9. Jenkins执行yarn install报错:error An unexpected error occurred:"... ... :Unexpected end of JSON input"

    解决方式: # cd /usr/local/n/versions/node/11.6.0/lib/(node的安装目录下) # rm -rf node_modules # yarn cache cle ...

  10. Ubuntu14.04创建WiFi热点

    右键右上角网络图标→Edit Connections →Wi-Fi→Add→Wi-Fi→Create→SSID(wifi名称)→Mode(Ad-hoc)→IPv4 Settings→Methods(S ...