Exception&Error
Java异常处理
1:什么是异常
异常(Exception)也叫异常。在Java编程语言中,异常就是程序在运行过程中由于硬件设备问题、软件设计错误、缺陷等导致的程序错误。
1.1:想打开的文件不存在
1.2:网络连接中断
1.3:操作数据超出预定范围
1.4:正在装载的类文件丢失
1.5:访问的数据库打不开 等
2:异常处理机制
2.1:在java程序执行过程中,如果出现了异常的事件,就会生成一个异常对象。这个对象可能是由正在运行的方法生成,也可能是java 虚拟机生成,其中包含一些指明异常事件的类型以及当异常发生时程序运行状态等
Java语言提供了两种处理异常的机制
2.1.1:捕获异常
在java程序运行过程中系统得到一个异常对象时,它将沿着方法的调用栈逐层回溯,寻找处理这一异常代码。找到后,运行时系统把当前异常对象交给这个方法进行处理,这一过程叫做捕获异常。
2.1.2:声明抛弃异常
当java程序运行中,系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在该方法声明时,声明抛弃(Throws)异常
2.2:异常处理的层次
Java中异常事件分为两大类。一类继承是Error Object --->Throwable -->Error 另一类是 Exception Object-->Throwable-->Exception
在Exception之下还有一些子类,其中继承于RuntimeException的类代表的是Java虚拟机在运行时所生成的异常,这些异常叫做运行时异常,其他继承与类Exception的子类则代表非运行时异常。
常见的运行时异常有以下几种。
类型转换异常 ClassCastException
数组超界异常ArrayIndexOutBoundsException
指定数组维数为负值异常 NegativeArraySizeException
算术异常 ArithmeticException
Java内部异常 InternalException 即JVM抛出的异常
内存溢出的异常 OutOfMemeoryException
没有找到类定义异常 NoClassDefFoundException
空指针异常 NullPointerException
常见的非运行时异常
ClassNotFoundException :找不到类或接口所产生的异常
CloneNotSupportedException :使用对象的clone方法但无法执行Cloneable所产生的异常
IllegalAccessException :类定义不明确所产生的异常
IOException:一般情况下不能完成I/O操作所产生的异常。
EOFException:打开文件没有数据可以兑取所产生的异常
FileNotFoundException:在文件系统中找不到文件名称或路径时所产生的异常
3:异常的处理
对于运行时异常,Java编译器允许程序不对它们做出处理;但是对于非运行时异常,则要求程序必须做捕获或者声明抛弃处理,否则是无法通过程序编译的。
3.1一个方法中如果对某种类型的异常对象提供了相应的处理代码,则这个方法可捕获该中异常。捕获异常用try-catch-finally语句实现
3.1.1 try
捕获异常的第一步是用try{ }选定捕获异常的范围,由try所限定的代码块中的语句在执行过程中可能会生成异常对象并抛弃。
3.1.2 catch
每一个try代码块可以可以伴随一个或多个catch语句,用于处理try代码块中所生成的异常事件。Catch语句只需要一个形式参数来指明它所能够捕获的异常类型,这个类必须是Throwable的子类,运行时系统同错参数值把被抛弃的异常对象传递给catch块。捕获异常的顺序和catch语句的顺序有关,当捕获一个异常后,剩下的catch语句就不在进行匹配。因此,在安排catch语句的顺序时,首先应该捕获最特殊的异常,然后再逐渐一般化。也就是说,一般先安排子类,再安排父类
3.1.3 finally
捕获异常的最后一步是通过finally语句为异常处理提供了一个统一的出口。一般用来关闭文件或释放资源
3.2 声明抛弃异常
如果在一个方法中生成了一个异常,但是这个方法并不确定的知道如果对这一异常进行处理,这时,该方法就应该声明抛弃异常,使得异常对象可以从调用栈向后传播,知道有合适的方法捕获它为止;声明抛弃异常是在一个方法声明的throws子句中指明的。
3.3 抛出异常
抛出对象就是产生异常对象的过程,首先要生成异常对象,异常或由虚拟机生成,或者由某些类的实例生成,也可以在程序中生成。在方法中,抛出异常对象时通过throw语句实现的
Exception&Error的更多相关文章
- Java异常处理总结Exception\Error
Java异常处理总结Exception\Error 2012-12-28 08:17:17| 分类: JAVA | 标签:java |举报|字号 订阅 Java异常处理总结 ...
- 遇到的Exception/error及解决办法记录汇总
一.java.net.SocketException 1.java.net.SocketException:Connection reset 首先,如果一端的Socket被关闭(或主动关闭,或因为异常 ...
- JAVA基础 Exception, Error
转载请附上本文地址: http://www.cnblogs.com/nextbin/p/6219677.html 本文参考: JAVA源码 http://swiftlet.net/archives/9 ...
- Exception error message with incorrect line number
In Release mode the number in front of the exception is NOT the line of code. Instead it's an offset ...
- DOM Exception error
INDEX_SIZE_ERR code 1 索引是负值,或者超过了索引值 DOMSTRING_SIZE_ERR code 2 ...
- DOM Exception error 类型
INDEX_SIZE_ERR code 1 索引是负值,或者超过了索引值 DOMSTRING_SIZE_ERR code 2 ...
- ** exception error: no match of right hand side value
错误发生的情况是模式匹配失败.对于badmatch异常,很难找到单一的原因,但经常性的原因是你无意间尝试绑定已绑定过的变量.
- keras:Exception: Error when checking model target
问题: 用keras的functional API搭建多输入多输出模型时,报错某个输出层对应的类标数组大小与模型中不一致. 解决办法:升级keras到最新版(doge脸)keras迭代太快了啊摔,总有 ...
- Kestrel: System.Exception: Error -4092 EACCES permission denied
字面理解: 权限问题.. 这种情况往往是因为运行的端口被占用.. 可能是iis上有些站点使用了这个端口.. 也可能是其他原因.. 但大部分是端口问题..
随机推荐
- BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]
做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给客户设计解决方案时大部分产品都是直接按照企业版的功能来设计,很 少考虑到价格和许可方面的因素,以为这个不是我们的事情或 ...
- Android课程---进度条及菜单的学习
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- JS开发windows phone8.1系列之3
http://msdn.microsoft.com/zh-cn/library/windows/apps/dn629638.aspx 这部分主要是使用页面导航 管理方式,在程序的default.htm ...
- java跳出外部循环
java跳出外部循环两种方法 //用flag标识 boolean flag = true; for(int i=0;i<10&&flag;i++){ for(int j=0;j& ...
- setInterval对某个数值加加渐减
decrease_time = setInterval(decrease_opacity_val,10); function decrease_opacity_val(){ showID.style. ...
- Multi-level Multi-select plugin
Property file: Country[tab]City United States[tab]San Francisco United States[tab]Chicago Mexico[tab ...
- Samba配置
https://wiki.samba.org/index.php/Samba_AD_DC_Port_Usage 安装后开放端口 1 ACCEPT tcp -- 0.0.0.0/0 ...
- 针对focus和blur的Dom事件触发顺序
Dom事件触发顺序,拿文本框举例: 它会先触发focus事件,之后才会触发在有交点之后才能触发的一些如 click change 等事件(但如果有mousedown则先执行). 而相对于blur而言 ...
- oracle 判断字符串是否日期格式
select case when to_char(TO_DATE(NVL('2015- 8', 'a'), 'yyyy-mm'),'yyyy-mm')='2015- 8' then 1 else 0 ...
- Linux Shell编程基础
在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls 显示当前路径下的文件,常用的有 -l 显示长格式 -a 显示所有包括隐 ...