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中所有不正常的类都是 ...
随机推荐
- EasyUI把datagrid的值赋给表单
$('#infoForm${INDEX}').form('load', rowToDto(pageConfig${INDEX}.infoName, row)); function rowToDto(i ...
- python3.5 jira网站实现用户的批量插入
工作中,经常要给多个用户创建账号,为了减少工作量,写了个自动化脚本来帮助我批量创建用户 代码如下: """自动创建Jira的学生账号""" ...
- CSP 201703-4 地铁修建 最小生成树+并查集
地铁修建 试题编号: 201703-4 试题名称: 地铁修建 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 A市有n个交通枢纽,其中1号和n号非常重要,为了加强运输能力, ...
- C#连接Oracle数据库解决报错(需要安装Oracle客户端软件8.1.7)的问题
1.通过nuget安装 ManagedDataAccess 2.引用 using Oracle.ManagedDataAccess.Client; 注:最低framework4.0 测试连接: // ...
- php如何运行
这篇文章,研究一下php代码是如何解释和执行以及PHP脚本运行的生命周期. 概述 PHP服务的启动.严格来说,PHP的相关进程是不需要手动启动的,它是随着Apache的启动而运行的.当然,如果有需要重 ...
- Node-SASS安装
鉴于国内的环境,node-sass实在是太难安装了,可以直接通过淘宝的npm镜像来安装. 1.安装cnpm(https://npm.taobao.org/) npm install -g cnpm - ...
- IDEA热部署自动重启服务问题
新接手项目过于庞大,从eclipse果断换成了IDEA.因为IDEA有免费的热部署,咳咳咳... 但是,手贱的我在下面这张状态下,直接OK了,TM,这不是我要的热部署啊,这是重新启动啊,但是勾选了do ...
- C 语言实例 - 判断奇数/偶数
C 语言实例 - 判断奇数/偶数 C 语言实例 C 语言实例 以下实例判断用户输入的整数是奇数还是偶数. 实例 #include <stdio.h> int main() { int nu ...
- Java代码读取文件
用Java代码读取文件时,保持文件本来的格式(主要是保持换行),这点有时候比较重要.用代码实现也相当简单. private static void readFile() { StringBuilder ...
- c# Array或List有个很实用的ForEach方法,可以直接传入一个方法对集合中元素操作
using System; using System.Collections.Generic; namespace demo { class Program { static void Main(st ...