Java异常之RuntimeException
人生不如意十有八九。在打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的更多相关文章
- java异常——RuntimeException和User Define Exception
1.RuntimeException public class RuntimeException { public static void main(String[] args) { // TODO ...
- Java checked 异常 和 RuntimeException(运行时异常)
目录 一.运行时异常 1.什么是RuntimeExceptioin 2.运行时异常的特点 3.如何运用运行时异常 二.运行时异常和ckecked异常的区别 1.机制上 2.逻辑上 一.运行时异常 1. ...
- “全栈2019”Java异常第十九章:RuntimeException详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- Java异常&&RuntimeException异常
Java异常可分为3种: (1)编译时异常:Java.lang.Exception (2)运行期异常:Java.lang.RuntimeException (3)错误:Java.lang.Error ...
- Java checked异常 和 RuntimeException
RuntimeException RuntimeException是非常特殊的子类,你可以不用throw和throws. 哪怕你throw了,也没必要throws,即使你throws了,调用者也没必要 ...
- 浅谈java异常[Exception]
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...
- Java异常体系及分类
上图是基本的java异常体系结构. 主要分为2大类:Error和Exception 1.Error:描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象,一般是由虚拟 ...
- Java异常之自定义异常
哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...
- 第11章 Java异常与异常处理
1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...
随机推荐
- Centos7 使用 supervisor 管理进程
一.安装 //直接使用pip安装(pip的安装 http://www.cnblogs.com/yxhblogs/p/8971251.html) pip install supervisor 二.配置 ...
- 使用WSAIoctl获取AcceptEx函数指针 [转]
Winsock2的其他供应商不一定会实现AcceptEx函数.同样情况也包括的其他Microsoft的特定APIs如TransmitFile,GetAcceptExSockAddrs以及其他Micro ...
- Gym - 101611D Decoding of Varints(边界值处理)
Decoding of Varints Statements Varint is a type used to serializing integers using one or more bytes ...
- 性能压测,SQL查询异常
早上测试对性能压测,发现取sequence服务大量超时报错,查询线上的监控SQL: 大量这个查询,我在DeviceID和Isdelete上建有复合索引,应该很快,而且我测试了一下,取值,执行效率很高, ...
- 在 WinForm/WPF 下制作 Google Material Design 风格程序
国内社区没有,顺手转.WinForm: https://github.com/IgnaceMaes/MaterialSkin演示:https://www.youtube.com/watch?v=A8o ...
- ue4 3dui交互相关
1 建立3d ui 新建一个Actor蓝图,上面加上Widget控件,widget Class选择任意ui蓝图,把这个actor蓝图放到场景任意合适位置 2 3dui交互 在合适位置(比如主角的相机上 ...
- AGC001 E - BBQ Hard【dp+组合数学】
首先直接按要求列出式子是\( \sum_{i=1}^{n}\sum_{j=i+1}^{n}C_{a_i+a_j+b_i+b_j}^{a_i+a_j} \) 这样显然过不了,因为ab的数据范围比较小,所 ...
- 初次学习DropWizard框架——解决maven打包时出现没有主清单属性的问题
笔者因为公司的项目需要,开始接触DropWizard框架,照着官网https://www.dropwizard.io/0.9.2/docs/getting-started.html撸了一遍. 工具为I ...
- transition动画最简使用方式
HTML <a href="#" title="">test</a> CSS a {display:block; width:200px ...
- ORACLE索引的作用及用法
https://blog.csdn.net/qq_34895697/article/details/52425289