我们学习或者工作的过程中,异常基本上是随处可在的,当然也是我们程序员的一生之敌。所谓知己知彼百战不殆,让我们一起了解异常有哪些。

异常有两个爸爸


java中所有的异常都是由两个父类异常出来的。一个是

Error还有一个是Exception。

1,Error它是错误,我们不能处理的错误

2,Exception,主要是编程中的错误,我们可以修改

解释:

Error更像是系统内部的错误,他很难处理,比如像运行报错,系统错误,最经典的就是内存溢出。你编写的程序内存溢出,基本上只能从根本改变程序逻辑,让电脑能够运行,或者是换一个大一点的内存。。。

Exception,一般都是我们编程使用中出现的问题,最经典的像是,编译错误,我们打错代码了。

Exception子类很多:IOException,ClassNotFoundException,ParseException,RuntimeException等

方便理解,图片如下:

liunx centos 终止安装 centos停止程序_JVM

出现了异常计算机是怎么处理的?


写一个错类

    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{
    //里面写的是可能出现报错的代码
}

上面的意思是,当代码出现找不到异常的时候,报错。

liunx centos 终止安装 centos停止程序_内存溢出_02

try...  catch

这两个是一起使用的,我们不能声明错误的时候怎么办?

直接自己处理,叫捕获异常

liunx centos 终止安装 centos停止程序_内存溢出_03

还有一个就是finally

liunx centos 终止安装 centos停止程序_内存溢出_04

必须执行finally中的代码。

哪里比较常用?关闭流的时候,因为流中的代码不管怎么运行错误,最后我们一定要把流关掉,这样程序才会停止。不然程序就不能正常的终止了。

异常的注意事项

多个异常使用 捕获又该如何处理?

1,多个异常分别处理

2,多个异常一次捕捉,多次处理

3,多个异常一次捕获一次处理

说白了就是try之写一次,后面可以接很多catch

不同的异常可以直接一排往后写,中间逗号分隔。

我们学习或者工作的过程中,异常基本上是随处可在的,当然也是我们程序员的一生之敌。所谓知己知彼百战不殆,让我们一起了解异常有哪些。

异常有两个爸爸


java中所有的异常都是由两个父类异常出来的。一个是

Error还有一个是Exception。

1,Error它是错误,我们不能处理的错误

2,Exception,主要是编程中的错误,我们可以修改

解释:

Error更像是系统内部的错误,他很难处理,比如像运行报错,系统错误,最经典的就是内存溢出。你编写的程序内存溢出,基本上只能从根本改变程序逻辑,让电脑能够运行,或者是换一个大一点的内存。。。

Exception,一般都是我们编程使用中出现的问题,最经典的像是,编译错误,我们打错代码了。

Exception子类很多:IOException,ClassNotFoundException,ParseException,RuntimeException等

方便理解,图片如下:

liunx centos 终止安装 centos停止程序_JVM

出现了异常计算机是怎么处理的?


写一个错类

    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{
    //里面写的是可能出现报错的代码
}

上面的意思是,当代码出现找不到异常的时候,报错。

liunx centos 终止安装 centos停止程序_内存溢出_02

try...  catch

这两个是一起使用的,我们不能声明错误的时候怎么办?

直接自己处理,叫捕获异常

liunx centos 终止安装 centos停止程序_内存溢出_03

还有一个就是finally

liunx centos 终止安装 centos停止程序_内存溢出_04

必须执行finally中的代码。

哪里比较常用?关闭流的时候,因为流中的代码不管怎么运行错误,最后我们一定要把流关掉,这样程序才会停止。不然程序就不能正常的终止了。

异常的注意事项

多个异常使用 捕获又该如何处理?

1,多个异常分别处理

2,多个异常一次捕捉,多次处理

3,多个异常一次捕获一次处理

说白了就是try之写一次,后面可以接很多catch

不同的异常可以直接一排往后写,中间逗号分隔。