一、异常概念:

异常:即指在程序执行的过程中,出现非正常情况,最终导致JVM的非正常停止。

在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建一个异常对象并抛出一个异常对象。Java虚拟机处理异常的方式就是中断处理。

异常指的不是语法错误,语法错误时,编译不通过,不会产生字节码文件,根本不能运行。
二、异常分类:

1,Error:严重错误Error,无法处理,只能事先避免,相当于绝症这种无法治愈的问题。必须修改源代码,程序才能继续执行。java虚拟机无法解决的严重问题.如:jvm系统错误,资源耗尽等严重问题,比如栈的溢出属于严重错误,程序会崩溃

2,Exception:表示异常,异常产生后,程序员可以通过代码去纠正,使得程序继续去运行,相当于感冒发烧这种小毛病,进行处理后可以恢复。其他因编程错误或偶然的外在因素导致的一般性问题,可以使用指定的代码去快速定位。

三、常见异常:

(一)常见的运行异常
1.NullPointerException空指针异常

2.ArithmeticException数学运算异常

3.ArrayIndexOutOfBoundsException数组下标越界异常

4.ClassCastException类型转换异常

5.NumberFormatException数字格式不正确

(二)常见的编译异常

SQLException 操作数据库时,查询表可能发生异常

IOExcepiton 操作文件时,发生的异常

FileNotFoundException当操作一个不存在的文件时,发生异常

ClassNotFoundException 加载类,而该类不存在时,异常

EOFException 操作文件,到文件末尾,发生异常

IIIegalArguementException 参数异常
 四、异常处理

异常处理的方式

1.try-catch-finally

2.throws + 异常类型

Java提供的是异常处理的抓抛模型。
过程一:Java程序的执行过程中如出现异常, 会生成一个异常类对象,该异常对象将被提交给Java运行时系统, 这个过程称为抛出(throw)异常。
过程二:抓,可以理解为异常的护理方式
 

try catch 语法
try{ 可能会异常的代码 } cath(ExceptionNum1 e){ 当产生ExceptionNum1异常会在这里进行处理 比如打印异常/比如输出对应的信息, } catch(ExceptionNUm2 e){ 当产生ExceptionNum2异常会在这里进行处理 比如打印异常/比如输出对应的信息, }finally{ 无论上面是否会产生异常都会执行的代码 }

注意事项:

1,try中可能会出现多个异常对象,可以使用多个catch来处理这些异常对象

2,如果try中产生了异常,那么就会执行catch中的异常处理逻辑,执行完catch中的异常处理逻辑,继续执行try…catch后的代码

如果try中没有产生异常,那么不执行catch的异常处理逻辑,即执行完try中的语句,继续处理try…catch后的代码

throws +异常类型 声明抛出异常是Java中处理异常的第二种方式 throws +异常类型,写在方法的声明处,此时此方法执行时, 可能会抛出的类型。 可以使用throws关键字进行异常处理,会把异常对象抛出给方法的调用者处理(自己不处理,交给别人处理),若没人处理,最终交给JVM处理——>中断处理 在方法声明中用throws语句可以声明抛出异常的列表, throws后面的异常类型可以是方法中产生的异常类型, 也可以是它的父类。 一旦方法体执行时,出现异常,仍会在异常代码处,生成一个异常类的对象,此对象满足throws后异常类型是,就会被抛出。异常代码后续的代码,就不在执行。throws的方式只是将异常抛给了方法的调用者,并没有真正将异常处理掉。 throw关键字后边创建的是RuntimeException或者是RuntimeException的子类对象我们可以不处理,默认交给JVM去处理

那么何选择try-catch和throws
如果父类中被重写的方法中没有throws方式处理异常,则子类重写的方法中也不能使用throws,意味如果子类重写的方法中有异常,必须使用try
-catch。 执行的方法a中,先后又调用了另外的几个方法,这九个方法是递进关系执行的,我们建议这几个方法使用throws的方式进行处理。
而执行的方法a可以考虑使用try
-catch

 

五、final

finally代码块:

格式:

try{可能产生异常的代码

} catch(定义一个异常的变量,用来接收try中抛出的异常对象){

异常的处理逻辑,产生异常之后,怎么处理异常对象

一般在工作中,会把异常信息记录在日志中

}

catch(异常类名 变量名){

}finally{

无论是否出现异常都会执行

}

原文地址:http://www.cnblogs.com/fan-wang/p/16800670.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性