在写程序时我们经常会遇到一些错误。
错误分为编译期间错误和运行期间错误
编译错误指 程序中缺少一个分号或者括号之类而导致程序无法运行,这种错误其实是很好找到的。
运行错误指 程序在运行后才出现的错误,比如数组下标越界,除0溢出,相对来说这种错误更难发现些
但JAVA具有异常处理的功能
异常就是运行期出现的错误,那么如何处理这些异常呢?
例:
public class TestEx {
public static void main(String[] args) {
int [] arr={1,2,3,4};
System.out.println(arr[4]);
}
}
运行后会提示
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at TestEx.main(TestEx.java:7)
大概的意思就是在第7行出现一个JAVA.lang包里的数组越界的异常,出现异常的数字是4。
这样我们就知道了原来是数组越界了,那么我只需要把4改到4以内就OK。
但是对于这个异常提示来说显得太专业化,用户也许不明白这个错误到底是什么意思,所以我们可以用
try{}
catch(){
}语句来捕获异常,让错误提示更加直观。
如
public class TestEx {
public static void main(String[] args) {
int [] arr={1,2,3,4};
try{
System.out.println(arr[4]);
}
catch(ArrayIndexOutOfBoundsException e){ // e是异常对象,名字任意
System.out.println("数组下标越界了");
}
}
}
try和 catch是关键字 而且必须一起用
try{}:里的代码是可能要出现错误的代码
catch(){}:是捕获异常,之后自己决定该怎么解决这个错误。
异常的分类
Throwable是根类 分两类
Error( 系统错误),Exception(可处理异常)
Exception 分为RuntimeException(经常出的错误,此错误可抓也可不抓),其他异常(必须catch);
异常是否需要catch就要去API里去查。
另外一段程序可能会抛出多个异常
那么try后面可以跟着多个catch(){}
finally 语法
try{
可能抛出异常的语句}
catch(异常类){
......}
finally{
}
finally是一个关键字,无论异常是否出现都要运行finally
finally用处:
进行资源的清楚工作,比如关闭文件,删除临时文件。