开发者社区> ghost丶桃子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java千百问_04异常处理(006)_常见的Java异常有哪些(运行时)

简介:
+关注继续查看

1、常见的java运行时异常有哪些

了解运行时异常看这里:什么是java中的异常

常见的非运行时异常看这里:常见的非运行时异常有哪些

我们所说的常见异常是指jdk或者其他常用第三方jar中,出现频次很高的异常。常见的运行时异常(RuntimeException)包括:

空指针异常类:NullPointerException
数组下标越界异常:ArrayIndexOutOfBoundsException
数组负长度异常:NegativeArraySizeException
数组存储异常:ArrayStoreException

算术异常类:ArithmeticException


非法参数异常:IllegalArgumentException
类型强制转换异常:ClassCastException
枚举常量不存在异常:EnumConstantNotPresentException
数字转换异常:NumberFormatException
无效的状态异常:IllegalStateException

无效的监控状态异常:IllegalMonitorStateException
无效的线程状态异常:IllegalThreadStateException

2、什么情况下会抛出这些异常

如何抛出异常看这里:如何抛出异常

1.java.lang.NullPointerException
这个异常大家肯定都经常遇到,异常的解释是:程序遇上了空指针。简单地说就是调用了未经初始化的对象或者是不存在的对象。
这个错误经常出现在操作方法返回值、调用数组这些操作中等等。
一般在调用他人有可能返回null的方法时,对null进行了后续操作,会抛出该异常,这里应该首先进行null判断然后再进行后续操作。
对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)

2.java.lang.ArrayIndexOutOfBoundsException
这个异常相信很多朋友也经常遇到过,异常的解释是:数组下标越界(这里的数组包括各类集合,如List等)。
现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看调用的下标是不是超出了数组的范围。再通过下标获取数组值之前,最好先查看一下数组的length,以免出现这个异常。
另外,如果传入的下标为负数,也会出现这个异常。

3.java.lang.NegativeArraySizeException
该异常的解释是:数组长度为负值异常
当使用负数作为数组长度创建数组时抛出该异常。
在创建数组之前,一定要确保数组长度非负,尤其是隐式创建(数组长度为变量)。

4.java.lang.ArrayStoreException
该异常的解释是:数组存储异常
当向数组中存放非数组声明类型对象时抛出。
在为数组赋值时,一定要注意类型的一致。

5.java.lang.ArithmeticException
该异常的解释是:数学运算异常
比如程序中出现了除以零这样的运算就会出这样的异常。对这种异常,大家只要好好检查一下自己程序中涉及到数学运算的地方,就能够解决。

6.java.lang.IllegalArgumentException
该异常的解释是:非法参数异常
很多java或者第三方类库中的方法在某情况下都会引发这样的错误。比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的则会出现这个异常。一旦发现这个异常,我们要赶紧去检查一下方法调用中的参数传递是不是出现了错误。

7.java.lang.ClassCastException
该异常的解释是:强制类型转换异常
假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。
一般会在类型强制转换时出现,我们一定要梳理好继承关系采取强转即可避免。

8.java.lang.EnumConstantNotPresentException
该异常的解释是:枚举常量不存在异常
当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象并不包含常量时,抛出该异常。
定义和使用枚举类型时需要小心。

9.java.lang.NumberFormatException
该异常的解释是:数字转换异常。该异常继承于IllegalArgumentException。
当将字符串转换为数字时,若格式错误则转换失败,抛出该异常。例如将"abc"抓换为整型即会抛出该异常。
我们在做数字转换时一定要注意。

10.java.lang.IllegalStateException
该异常的解释是:无效的状态异常
当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常。
例如在程序中两次调用了response.sendRedirect()方法,就会抛出该异常。

11.java.lang.IllegalMonitorStateException
该异常的解释是:无效的监控状态异常
当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。
异常的发生是由于程序员没有注意notify(),notify(),wait()方法的使用条件,没有真正理解线程同步机制。如果当前的线程不是此对象锁的所有者,却调用该对象的notify(),notify(),wait()方法时抛出该异常。

12.java.lang.IllegalThreadStateException
该异常的解释是:无效的线程状态异常。该异常继承于IllegalArgumentException。
当线程尚未处于某个方法的合法调用状态,而调用了该方法时,抛出异常。

当对一个已经死亡的线程调用start,sleep之类的操作,会抛出该异常。


原文地址:http://blog.csdn.net/ooppookid/article/details/51112765

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java 异常处理的 20 个最佳实践,你知道几个?
异常处理是 Java 开发中的一个重要部分,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等。Java 提供了几个异常处理特性,以try,catch 和 finally 关键字的形式内建于语言自身之中。
759 0
Java异常处理 10 个最佳实践
异常处理是Java 开发中的一个重要部分。它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等。Java提供了几个异常处理特性,以try,catch 和 finally 关键字的形式内建于语言自身之中。Java 编程语言也允许你创建新的异常,并通过使用 throw 和 throws关键字抛出它们。事实上,在Java编程中,Java的异常处理不单单是知道语法这么简单,它必须遵循标准的JDK库,和几个处理错误和异常的开源代码。这里我们将讨论一些关于异常处理的Java 最佳实践。
0 0
网页截图和svg模版动态生成图片Java实现(1)
网页截图和svg模版动态生成图片Java实现(1)
0 0
网页截图和svg模版动态生成图片Java实现(2)
网页截图和svg模版动态生成图片Java实现(2)
0 0
网页截图和svg模版动态生成图片Java实现(3)
网页截图和svg模版动态生成图片Java实现(3)
0 0
还在云吸猫?自己造一个Tom猫(Java语言实现版本)
还记得小时候玩的一个手机游戏Tom猫吗,这只猫一直伴随着我长大,小时候我记得我可爱玩这只猫了,虽然他涨的的不好看,但是也不妨碍我喜欢他,今天刚好趁着掘金的吸猫活动,用Java重温一下这只可爱的猫猫。
0 0
在java 8 stream表达式中实现if/else逻辑
在java 8 stream表达式中实现if/else逻辑
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
JAVA反射原理以及一些常见的应用
立即下载
Java基础入门(四)-泛型、反射、注解
立即下载
《阿里巴巴Java开发手册(详尽版)1.4.0》
立即下载