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上有些站点使用了这个端口.. 也可能是其他原因.. 但大部分是端口问题..
随机推荐
- in_array支持第三个参数,强制对数据类型检测
in_array函数是判断数据中是否存在指定的内容了,对于这个函数用法非常的简单但在使用过程中会我发现有一些问题. 先介绍一下需求背景: 发票方式: 0=捐赠(不要问我为什么,历史原因) 1=对中寄送 ...
- cordova-sqlite-plugin常用数据库操作
ionic项目需要做本地缓存,研究了一番,总结出了常用的数据库操作: 1.新建数据库,用angularJS+ionic: //声明一个数据库对象 var db = null; //事件devicere ...
- Android SDK路径不能含有空格
错误, android sdk location shoud not contain whitespace,as this can cause problems with thte ndk tools
- 滚动固定TAB在顶部显示
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- 【转】Unity中添加组件的几种方法
http://blog.csdn.net/monzart7an/article/details/23199647 一.在编辑器上面添加一个组件.这个不用多说. 二.在脚本中利用AddComponent ...
- 实现loading动画效果
下面我就来罗列三种实现loading动画效果的方法. 方法一:使用UIImageView自带的方法来实现,这也是我推荐的实现方法. NSMutableArray *array = [[NSMutabl ...
- C#使用ajaxForm进行上传图片
<div class='imgOuter addImgBtn l_canshu' id='ImagePath1' value=''> <img src="../Images ...
- ETL的数据来源,处理,保存
1.ETL 数据来源:HDFS 处理方式:Mapreduce 数据保存:HBase 2.为什么保存在Hbase中 数据字段格式不唯一/不相同/不固定,采用hbase的动态列的功能非常适合 因为我们的分 ...
- 微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)
此类事件是手机touchmove默认事件行为,可以通过js代码隐藏事件: $(‘body’).on(‘touchmove’, function (event) {event.preventDefaul ...
- mysql-四舍五入
四舍五入:1.format函数:select FORMAT(2.567,2); 返回:2.57select FORMAT(12562.6655,2); 返回:12,562.67 //整数部分超过三位的 ...