Java 常见异常类型及其原因分析
开发工具与关键技术:Java
作者:吴永旗
撰写时间:2019年5月22日
常见几种的异常有:NullpointerException异常;classCastException异常; ArrayIndexOutOfBoundsException异常;UnsupportedClassVersionErrorc错误; NumberFormatException异常;
- NullpointerExceptiony异常
顾名思义,NumberFormatException是空指针异常,在java中虽然不是真正的空针异常,但本质上来说差不多了,是引用没有指向具体的实例,所以当访问这个引用的方法的时候就会就会产生这种异常。
例如如下代码:
String str=“这是一条字符串”;
System.out.println(str.length());
这段代码是没有问题,如果修改成下面的代码:
String str=“这是一条字符串”;
System.out.println(str.length());
就会产生NullpointerExceptiony异常了
这种异常通常是如何产生呢?比较常见的两种情况:
a)把调用某个方法的返回值直接赋值给某个引用,然后调用这个引用的方法。这种情况下,如果返回的值是null,必然产生NullpointerExceptiony异常
例如:
public static void main(String[] args) {
User p=null;
p.setUsername(“李三”);
System.out.println(p.getUsername());
}
分析:声明一个User对象,并打印出该对象的username值
说明:这个时候你的p就出现空指针异常,因为你只声明了这个user类型的对象,并没有创建对象,所以他的堆里没有地址引用,所以切忌你要用对象调用方法的时候一定要创建对象。
b)方法体中调用参数的方法。
这种情况下,如果调用方法的时候传递进来的值是null,也要产生NullpointerExceptiony异常。需要解决这个异常,只需要检查异常出现在第几行,然后查看调用了那个对象的方法,然后检查这个对象为什么没有赋值成功即可。
要避免程序产生这种异常,比较好的解决方法是在调用某个对象的方法时候判断这个对象
是否可能为空,如果可能,则增加判断语句,例如:
if (str !=null) {
System.out.println(str.length());
}else{
System.out.println(0);
} - ClassCastException异常
从字面上看,是类型转换错误,通常进行强制类型转换时候出现错误,下面进行ClassCastException异常的原因进行分析,然后给出这种异常的解决方法。
这种异常是如何产生的呢?据一个简单例子。
Animal表示动物,Dog表示狗,是动物的子类,Cat表是猫,是动物的子类,看下面代码:
Animal a1=new Dog();
Animal a2=new Cat();
Dog d1=(Dog)a1;
Dog d2=(Dog)a2
第3行代码和第四行代码基本相同从字面意思看都是把动物强制转换为狗,
但是第四行代码产生java.lang.ClasssCastException异常。原因你想把猫转换为狗,那是不可能的,而第三行代码把狗转换为狗当然可以。
从上面例子看,java.lang.ClasssCastException, 是强制类型转换时候出现异常,强制转换类型的前提是父类引用指向的对象的类型是子类的时候才可以进行强制类型转换,如果父类引用指向的对象的类型不是子类的时候就会产生java.lang.ClasssCastException异常。
遇到这样的时候如何解决呢?
如果你知道要访问的对象具体类型,直接转换类型即可,如果不能确认类型可以通过下面两种方式(假设对象为a)
通过a.getClass().getName()得到具体类型,可以通过语句输出这个类型,然后根据类型进行处理。
通过if(a instanceofl类型)的语句a的类型是什么
3. ArrayIndexOutOfBoundsException异常
这是一个非常常见的异常,从名字看是数值下标越界错误,解决方法就是查看为什么下标越界。下面是一个错误示例:
Exception in thread “main” java.lang. ArrayIndexOutOfBoundsException:2
at test4.State.nextStates(State.java:93)
at test4.State.main(State.java:478)
1) 错误发生在93行
2) 发生错误的时候,下标值为2
接下来想分析下标值为什么是2就可以解决了
4. UnsupportedClassVersionErrorc错误
错误提如下:
Java.lang. UnsupportedClassVersionErrorc:Bad version number in.class file
错误原因:编译java和java所使用的java的版本不一致;
解决方法:修改运行的java版本或者修改编译的java版本,就可以了
5. NumberFormatException异常
数字转换异常,在把一个表示数字的字符串转换成数字类型的时候可能报这个异常
原因是作为参数的字符串不是由数字组成。
6. 常见的异常类
异常 描述
RuntimeExcePtion java.lang包中多异常的基类
ArithmeticException 算术错误
IllegalArgumetException 方法收到非法参数
SecuriyException 试图违反安全性
ClassNotFoundException 不能加载请求的类
AWTExcetion AWT中异常
IOExcetion I/O异常
FileNotFoundExcePtion 不能找到文件
EoFception 文件结束
IllegalAccessException 对类的访问被拒绝
NoSuchMethodException 请求方法不存在
InterruptedException
Java 常见异常类型及其原因分析相关推荐
- Java常见异常类型及原因分析
Java常见异常类型及原因分析 0x1 NullPointerException异常 顾名思义,NullPointerException 是空指针异常.但是在 Java 中没有指针,怎么会有 空指针异 ...
- Java常见异常种类及产生原因
Java常见异常种类及产生原因 JAVA异常共分为下列几种 Error JAVA环境编译错误 Runtime Exception 运行处异常 Exception 标准Java库方法异常 throw 用 ...
- JAVA常见异常信息(保存)
一. java基础编程中常见的错误(基本类型) 包装类型参与运算时,要做null值校验,否则可能出现空指针异常. 包装类型比较大小,不能使用compare(i,j)直接比较,因为该方法是用来比较基本类 ...
- Python编程常见出错信息及原因分析(2)
(1)缩进错误 演示代码: >>> if 5>3: print('5>3') SyntaxError: expected an indented block >&g ...
- Java 常见异常种类
Java 常见异常种类 参考文章: (1)Java 常见异常种类 (2)https://www.cnblogs.com/cvst/p/5822373.html 备忘一下.
- python常见的异常类有哪些_Python常见异常类型
标签:常见 nic 警告 werror pytho 无效 本地变量 计算 point BaseException 所有异 ...
- Python编程常见出错信息及原因分析(5):安装扩展库
本文主要介绍使用pip安装扩展库时常见的错误. (1)pip命令应该在命令提示符环境中执行,如果在Python开发环境中执行,则会出现下面的错误: (2)不存在要安装的扩展库,此时应仔细检查是否有拼写 ...
- Python编程常见出错信息及原因分析(4)
(1)删除列表元素引起的下标变化错误 演示代码: x = list(range(10)) for i in range(len(x)): if x[i]%2 == 0: del ...
- Python编程常见出错信息及原因分析(3)
(1)不可哈希错误 演示代码: >>> x = {[1], [2]} Traceback (most recent call last): File "<pysh ...
最新文章
- POJ1523 SPF tanjar割点求块数
- Netty - ByteBuf索引管理
- 迁移物理solaris系统至一个区域
- Matlab图像处理创新实践-实验1【图像滤波基础(1)】
- Angular里的structural directive的一个例子
- 大型程序是如何开发的_小程序开发好之后如何引流
- 阿里巴巴卖空阿里巴巴入股新浪微博抑制投资者卖空行为
- 计算机格式化系统,硬盘被苹果电脑格式化后如何恢复数据?
- @override注解_Spring中的各种注解深入理解
- VMware ESXi 6.7安装过程介绍
- PackageManager的参数及使用
- 识别中文_关于开展中文语音识别和语音合成基础服务可信评估的通知
- 【SpringBoot学习】35、SpringBoot 简易文件服务器
- java Short详解
- Java学习之JavaFX安装
- 开源软件 AnimeGANv2:一键生成宫崎骏动漫风格照
- 搜狗浏览器的高速模式果然很流畅
- ubuntu从19.04升级到20.04后五笔一直不能输入中文,解决方法
- 日常工作笔记0807
- c++连通区域处理 种子生成法
热门文章
- mac电脑如何下载homebrew
- Ubuntu 18.04/20.04 安装Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter 驱动
- 火车头插件:根据文章标题生成图片;标题生成相关配图
- Java API连接HBase
- yui java 右键_给YUI Compressor添加右键命令,完成快捷压缩
- 我迟早被这些AI绘画笑死
- 患者知情同意书无纸化电子签核解决方案
- 首次使用windows10安装DB2_10.5数据库踩坑全教程,附加问题解决目录思路汇总
- XV6 lab3:Trap
- JAVA第二阶段 GJP项目