java程序中的经常出现的的异常处理课后总结
一、JDK中常见的异常情况
1、常见异常总结图

2、java中异常分类
Throwable类有两个直接子类:
(1)Exception:出现的问题是可以被捕获的
(2)Error:系统错误,通常由JVM处理
3、被捕获的异常分类
(1)Check异常: 派生自Exception的异常类,必须被捕获或再次声明抛出
(2)Runtime异常:派生自RuntimeException的异常类。使用throw语句可以随时抛出这种异常对象 throw new ArithmeticException(…);
二、发生异常的原因
1、用户输入了非法数据。
2、要打开的文件不存在。
3、网络通信是连接中断
4、JVM内存溢出
三、java程序中几种常见的异常以及出现此异常的原因
1、java.lang.NullpointerException(空指针异常)
原因:这个异常经常遇到,异常的原因是程序中有空指针,即程序中调用了未经初始化的对象或者是不存在的对象。
经常出现在创建对象,调用数组这些代码中,比如对象未经初始化,或者图片创建时的路径错误等等。对数组代码
中出现空指针,是把数组的初始化和数组元素的初始化搞混淆了。数组的初始化是对数组分配空间,而数组元素的
初始化,是给数组中的元素赋初始值
2、java.lang.ClassNotFoundException(指定类不存在)
原因:当试图将一个String类型数据转换为指定的数字类型,但该字符串不满足数值型数据的要求时,就抛出这个异
常。例如将String类型的数据"123456"转换为数值型数据时,是可以转换的的。但是如果String类型的数据中包含了
非数字型的字符,如123*56,此时转换为数值型时就会出现异常。系统就会捕捉到这个异常,并进行处理
3、java.lang.ClassNotFoundExceptio(指定的类不存在)
原因:是因为类的名称和路径不正确,通常都是程序试图通过字符串来加载某个类的时候可能会引发异常。例如:
调用Class.forName()、或者调用ClassLoad的finaSystemClass()、或者是LoadClass()时出现异常
4、java.lang.IndexOutOfBoundsException(数组下标越界异常)
原因:查看程序中调用的数组或者字符串的下标值是不是超出了数组的范围,一般来说,显示调用数组不太容易出这
样的错,但隐式调用就有可能出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是
事先声明的,这个时候可以先查看一下数组的length,以免出现这个异常
5、java.lang.IllegalArgumentException(方法的参数错误)
例如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的会出现这个异常,如果程
序中存在这个异常,就要去检查一下方法调用中的参数传递或参数值是不是有错
6、java.lang.IllegalAccessException(没有访问权限)
当程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。如果程序中用了Package的情况下
有可能出现这个异常
7、java.lang.ArithmeticException(数学运算异常)
当数学运算中出现了除以零这样的运算就会出这样的异常。
8、java.lang.ClassCastException(数据类型转换异常)
当试图将对某个对象强制执行向下转换,但该对象又不可转换或又不可转换为其子类的实例时将出现该异常
9、 java.lang.FileNotFoundException(文件未找到异常)
当程序打开一个不存在的文件来进行读写时将会引发该异常。该异常由FileInputStream,FileOutputStream,
RandomAccessFile的构造器声明抛出,即使被操作的文件存在,但是由于某些原因不可访问,比如打开一个
只有只读权限的文件并向其中写入数据,以上构造方法依然会引发异常
10、java.lang.ArrayStoreException(数组存储异常)
当试图将类型为不兼容类型的对象存入一个Object[]数组时将引发异常
11、java.lang.NoSuchMethodException(方法不存在异常)
当程序试图通过反射来创建对象,访问(修改或读取)某个方法,但是该方法不存在就会引发异常。
12、 java.lang.EOFException(文件已结束异常)
当程序在输入的过程中遇到文件或流的结尾时,引发异常。因此该异常用于检查是否达到文件或流的结尾
13、java.lang.InstantiationException(实例化异常)
当试图通过Class的newInstance()方法创建某个类的实例,但程序无法通过该构造器来创建该对象时引发。
Class对象表示一个抽象类,接口,数组类,基本类型 。该Class表示的类没有对应的构造器。
14、java.lang.InterruptedException(被中止异常)
当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。
15、java.lang.CloneNotSupportedException (不支持克隆异常)
当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常
16、java.lang.OutOfMemoryException (内存不足错误)
当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误
17、java.lang.NoClassDefFoundException (未找到类定义错误)
当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误
四、Java异常处理的总结。
java程序中的经常出现的的异常处理课后总结的更多相关文章
- Linux上从Java程序中调用C函数
原则上来说,"100%纯Java"的解决方法是最好的,但有些情况下必须使用本地方法.特别是在以下三种情况: 需要访问Java平台无法访问的系统特性和设备: 通过基准测试,发现Jav ...
- 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案
方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...
- 如何在java程序中调用linux命令或者shell脚本
转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...
- Java程序中调用Python脚本的方法
在程序开发中,有时候需要Java程序中调用相关Python脚本,以下内容记录了先关步骤和可能出现问题的解决办法. 1.在Eclipse中新建Maven工程: 2.pom.xml文件中添加如下依赖包之后 ...
- 在java程序中访问windows有用户名和密码保护的共享目录
在java程序中访问windows有用户名和密码保护的共享目录 Posted on 2015-11-20 14:03 云自无心水自闲 阅读(3744) 评论(0) 编辑 收藏 --> Jav ...
- java程序中默认浮点形值常量是什么类型的?如何区分不同类型的浮点型整数值常量?
java程序中默认浮点形值常量是什么类型的 默认的所有的浮点型数值都是double型
- java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量?
java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量? 整数值默认就是int类型,只有在数值常量后面加“L”或“l”才表明该常量是long型
- java程序中获取kerberos登陆hadoop
本文由作者周梁伟授权网易云社区发布. 一般我们在使用kbs登陆hadoop服务时都直接在shell中调用kinit命令来获取凭证,这种方式简单直接,只要获取一次凭证之后都可以在该会话过程中重复访问.但 ...
- Derby安装,创建数据库,在Java程序中使用Derby
1,下载并安装Derby: 下载地址:http://db.apache.org/derby /derby_downloads.html,下载最新版本. 我用的是10.5.3.0. 解压缩到任意文件夹, ...
随机推荐
- jQuery之绑定焦点事件(焦点事件失效)
在使用jQuery绑定事件时,若某个事件不存在,则该事件后 绑定的事件均失效: 如图所示,若失去焦点事件checkEmail不存在, 会导致后面的事件checkMobile,和事件checkBirth ...
- SQLite - C/C++接口 API(二)
1.打开数据库 SQLITE_API int sqlite3_open16( const void *filename, /* Database filename (UTF-16) */ sqlite ...
- Django框架之登录案例
内容: (1)request.GET和request.POST (2)获取get方法提交和post方法提交的数据 一.登录案例 登录逻辑代码 def login(request): if reques ...
- Ubuntu系统中创建虚拟环境
1.虚拟环境产生的原因:如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无法运行了. ...
- 14. 深入解析Pod对象(一)
14. 深入解析Pod对象(一) """ 通过前面的讲解,大家应该都知道: Pod,而不是容器,它是 Kubernetes 项目中的最小编排单位.将这个设计落实到 API ...
- UCS内存问题排查
UCS使用双列直插式内存模块(Dual In-line Memory Module (DIMM) )作为RAM模块. 根据文档介绍,主要有如下部分:1.Memory placement <内存放 ...
- msbuild发布web应用程序
aspnet_compiler.exe 只能编译 网站,web应用程序项目使用下面的命令即可. msbuild C:\Jenkins\jobs\KM_ERP_WEBAPP\workspace\KMWe ...
- Typescript 实战 --- (8)高级类型
1.交叉类型 将多个类型合并成一个类型,新的类型将具有所有类型的特性,适用于对象混用 语法: 类型1 & 类型2 & 类型3 interface CatInterface { ...
- kubernetes从入门到放弃(二)
kubernetes对象之pod 1.pod的认识 Pod直译是豆荚,可以把容器想像成豆荚里的豆子,把一个或多个关系紧密的豆子包在一起就是豆荚(一个Pod).在Kubernetes中我们不会直接操作容 ...
- 2020.02.28 Linux 命令
Cat 语法格式 cat [-AbeEnstTuv] [--help] [--version] fileName 参数说明: -n 或 --number:由 1 开始对所有输出的行数编号. -b ...