我们学习或者工作的过程中,异常基本上是随处可在的,当然也是我们程序员的一生之敌。所谓知己知彼百战不殆,让我们一起了解异常有哪些。
异常有两个爸爸
java中所有的异常都是由两个父类异常出来的。一个是
Error还有一个是Exception。
1,Error它是错误,我们不能处理的错误
2,Exception,主要是编程中的错误,我们可以修改
解释:
Error更像是系统内部的错误,他很难处理,比如像运行报错,系统错误,最经典的就是内存溢出。你编写的程序内存溢出,基本上只能从根本改变程序逻辑,让电脑能够运行,或者是换一个大一点的内存。。。
Exception,一般都是我们编程使用中出现的问题,最经典的像是,编译错误,我们打错代码了。
Exception子类很多:IOException,ClassNotFoundException,ParseException,RuntimeException等
方便理解,图片如下:
出现了异常计算机是怎么处理的?
写一个错类
new ArrayIndexOutOfBoundsException("3");
明显出现了数据类型错误
首先虚拟机JVM会接收到这个异常对象,然后他会作出两件事。
1,把异常对象(内容,原因,位置)以红色的字体打印在控制台
2,JVM会终止当前正在执行的java程序
异常就像人类的疼痛一样,其实更像是一种保护机制,即时的反应出问题并且中断当前的程序。报错不可怕,因为你会知道出现了什么问题。可怕的是连错误都不报,而且程序也不能正常的执行。那将无从下手修改成正确的程序。
异常处理
try、catch、finally、throw、throws
先介绍throw,它是一个关键字
使用方法:
throw new NullPointerException("问题说明文字**");
这句话就是出现了空指针异常的时候出现引号里的提醒。
throws
声明异常:将问题表示出来,报告给调用者。如果方法内通过throw抛出了编译时异常,而没有捕获处理,就必须由throws声明
当你这个方法需要声明异常的时候,就可以吧throws添加进去。
使用方法:
public static void main(String[] args)
throws FileNotFoundException{
//里面写的是可能出现报错的代码
}
上面的意思是,当代码出现找不到异常的时候,报错。
try... catch
这两个是一起使用的,我们不能声明错误的时候怎么办?
直接自己处理,叫捕获异常
还有一个就是finally
必须执行finally中的代码。
哪里比较常用?关闭流的时候,因为流中的代码不管怎么运行错误,最后我们一定要把流关掉,这样程序才会停止。不然程序就不能正常的终止了。
异常的注意事项
多个异常使用 捕获又该如何处理?
1,多个异常分别处理
2,多个异常一次捕捉,多次处理
3,多个异常一次捕获一次处理
说白了就是try之写一次,后面可以接很多catch
不同的异常可以直接一排往后写,中间逗号分隔。
我们学习或者工作的过程中,异常基本上是随处可在的,当然也是我们程序员的一生之敌。所谓知己知彼百战不殆,让我们一起了解异常有哪些。
异常有两个爸爸
java中所有的异常都是由两个父类异常出来的。一个是
Error还有一个是Exception。
1,Error它是错误,我们不能处理的错误
2,Exception,主要是编程中的错误,我们可以修改
解释:
Error更像是系统内部的错误,他很难处理,比如像运行报错,系统错误,最经典的就是内存溢出。你编写的程序内存溢出,基本上只能从根本改变程序逻辑,让电脑能够运行,或者是换一个大一点的内存。。。
Exception,一般都是我们编程使用中出现的问题,最经典的像是,编译错误,我们打错代码了。
Exception子类很多:IOException,ClassNotFoundException,ParseException,RuntimeException等
方便理解,图片如下:
出现了异常计算机是怎么处理的?
写一个错类
new ArrayIndexOutOfBoundsException("3");
明显出现了数据类型错误
首先虚拟机JVM会接收到这个异常对象,然后他会作出两件事。
1,把异常对象(内容,原因,位置)以红色的字体打印在控制台
2,JVM会终止当前正在执行的java程序
异常就像人类的疼痛一样,其实更像是一种保护机制,即时的反应出问题并且中断当前的程序。报错不可怕,因为你会知道出现了什么问题。可怕的是连错误都不报,而且程序也不能正常的执行。那将无从下手修改成正确的程序。
异常处理
try、catch、finally、throw、throws
先介绍throw,它是一个关键字
使用方法:
throw new NullPointerException("问题说明文字**");
这句话就是出现了空指针异常的时候出现引号里的提醒。
throws
声明异常:将问题表示出来,报告给调用者。如果方法内通过throw抛出了编译时异常,而没有捕获处理,就必须由throws声明
当你这个方法需要声明异常的时候,就可以吧throws添加进去。
使用方法:
public static void main(String[] args)
throws FileNotFoundException{
//里面写的是可能出现报错的代码
}
上面的意思是,当代码出现找不到异常的时候,报错。
try... catch
这两个是一起使用的,我们不能声明错误的时候怎么办?
直接自己处理,叫捕获异常
还有一个就是finally
必须执行finally中的代码。
哪里比较常用?关闭流的时候,因为流中的代码不管怎么运行错误,最后我们一定要把流关掉,这样程序才会停止。不然程序就不能正常的终止了。
异常的注意事项
多个异常使用 捕获又该如何处理?
1,多个异常分别处理
2,多个异常一次捕捉,多次处理
3,多个异常一次捕获一次处理
说白了就是try之写一次,后面可以接很多catch
不同的异常可以直接一排往后写,中间逗号分隔。