一、异常概念:
异常:即指在程序执行的过程中,出现非正常情况,最终导致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{
无论是否出现异常都会执行
}
标签:Java,处理,try,catch,异常,throws From: https://www.cnblogs.com/fan-wang/p/16800670.html