论文部分内容阅读
【摘 要】Java语言拥有强大的异常处理机制,正确地使用好异常处理可以增强程序的健壮性和稳定性,本文对Java异常引起的原因,对异常处理机制的三个重要环节进行了深入的探讨,最后通过一个实例来说明Java语言的异常处理的具体应用。
【关键词】Java语言;异常处理;应用
0.引言
Java异常是描述在代码段中发生的运行出错情况的对象。程序中的错误可能来自于如下两个方面问题:编译错误和运行错误。编译错误是由于所编写的程序存在语法问题,未能通过由源代码到目标代码的编译过程而产生的错误,它将由Java语言的编译系统负责检测和报告;运行错误是在程序的运行过程中产生的错误。在Java语言中,提供了一种独特的处理异常的机制,通过这种异常处理机制来处理程序中出现的错误,从而提高程序的容错性,使开发出来的程序更为健壮。
1.Java异常类的种类及引起异常的原因
1.1 Java异常类的种类
Java异常类的种类可分成两大类:(1)Error类:指的是Java运行环境出现的错误或系统错误,这些错误一般是很严重的错误,即使捕捉到也无法处理,由Java虚拟机生成并抛出,包括系统崩溃、动态链接失败、虚拟机错误等,在Java程序中不做处理。(2)Exception类:指一些可以被捕获且可能恢复的异常情况,是一般程序中可预知的问题。
1.2 Java异常引起原因
Java程序在运行过程中,可能会运行到非正常的执行状态,这些状态可能是由以下原因引起的:第一种情况:表达式的计算违反了Java 语言的规则,例如除法运算过程中被整数为0;在载入或链接Java 程序时出错;超出了某些资源限制,例如使用了太多的内存。
第二种情况,Java 程序代码中的throw 语句被执行。第三种情况,异步异常发生。异步异常的原因可能有:(1)Thread的stop方法被调用。(2)Java虚拟机内部错误发生。
2.Java中异常处理机制的三个重要环节
2.1抛出异常
抛出异常就是程序设计时当前代码中遇到了一个不知道怎么处理的情况,在程序代码中需要创建一个异常来将这个错误描述清楚,并且将这个异常抛出。异常被抛出之后面临两个路可走:首先是异常被捕捉并被处理,其次是讓方法继续抛出这个异常。
抛出异常的方式有两种:
(1)在方法代码中使用throw关键字来抛出实例化的异常对象。
(2)在方法声明中使用throws关键字抛出方法代码中throw关键字抛出的异常对象。
2.2传递异常
异常实例在方法代码中使用throw关键字被抛出后,如果是throws关键字后面的异常类列表的某个类型的实例,则方法将继续抛出这个异常,异常继续传递给方法的调用者,直到被处理掉或到达main()方法,异常传递main()方法之后,就会被Java平台处理掉。
2.3处理异常
处理异常就是根据异常类型,提供不同的catch语句进行处理,Java异常处理机制会将异常类型传递给匹配的catch语句,然后catch语句就可以根据异常对象的信息,具体问题分析,进行相应的补救措施,使程序可以继续运行下去。
Java异常处理机制采用以下三种方法来处理代码中产生的异常实例:
(1)try...catch语句捕获并处理异常,使用try…catch语句处理异常可以分为以下两种方式:
1)多类异常,分类处理;2)多类异常,一并处理。
语法格式如下:
Try{
异常代码 //根据异常类型,提供不同的catch语句分类进行处理
}catch(Exception1 e){
处理方法1
}catch(Exception2 e){
处理方法2
}
1)语法核心:使用try语句标记出可能异常的代码块,使用catch语句将这些异常按匹配规则进行处理。
2)匹配规则:异常实例的类型是catch语句的异常类型或是其子类,若一个catch语句的类型是Throwable类型,则可以用它来处理try语句块中抛出的所有异常。
(2)try…catch…finally语句块处理异常,其中finally语句块在正常情况下都会被执行,唯一不被执行的情况是方法执行了System.exit()方法。若一个异常没有被处理掉,在抛出之前会先finally之后再被抛出,即使在catch语句中使用return来结束程序,finally执行完后才返回return。Finally语句通常用来释放程序所占用的资源,如数据库查询异常的时候,释放JDBC连接等。
语法格式如下:
try{
异常代码
}catch(Exception e){
处理方法
}finally{
必须要执行的代码
}
(3)用throw语句处理异常,对于处理不了的异常或者要转型的异常,在方法的声明处通过throws关键字抛出异常或在代码中用throw关键字来抛出异常对象。
语法格式如下:
Public static void 方法名(参数)throws 异常对象
If 语句{
throw 异常对象;
}
3.Java异常处理机制在应用程序中的具体应用
本例设计一个应用程序完成课程成绩查询与输出工作,在一个数组中存储一个学生的2门课成绩,从键盘输入要选择查询的课程代码(1~2),输出对应的课程名称和成绩。为防止用户输入输入数据时可能发生的异常情况,在程序设计时特设计了异常处理过程。 3.1应用程序主要代码
import java.util.InputMismatchException;
import java.util.Scanner;
public class four {
public static void main(String[] args){
int[] classScore={82,87,92};//声明一个数组且初始化值
Scanner input=new Scanner(System.in);//新建一个键盘输入对象
System.out.println("请输入要查询的课程代码:");try{
int i=input.nextInt(); //输入一个整数
int result=score[i-1];
System.out.println("课程名称\t成绩");
if(i==201)//课程代码判断
System.out.println("大学语文:\t");
else if(i==202)
System.out.println("Android应用开发:\t");
System.out.println(result);//输出课程的成绩
}catch(InputMismatchException e){//异常捕获及处理
System.out.println("输入课程代码不正确!");
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("數组下标越界!");//异常捕获及处理
}catch(Exception e){
System.out.println("程序产生异常,原因为:"+e);
}finally{
System.out.println("程序结束!");
}
}
}
3.2应用程序异常处理分析
在这个应用程序中,程序开发人员设计了三个catch语句来对可能的异常进行处理,增强程序的健壮性。异常处理如下:
(1)能够自动判断输入数据是不是合法的数字数据,如果不是,第一个catch语句将捕获“InputMismatchException”异常,中止程序运行,给出提示信息:“输入不正确,请检查!”。
(2)能够自动判断输入的数据是否超出了范围,超出了范围会导致此程序中数组下标越界,第二个catch语句将捕获到“ArrayIndexOut
OfBoundsException”异常,中止程序运行,并给出提示信息:“数组下标越界!”。
(3)其他异常检测,本例中通过“Exception”语句,来捕获上面两种之外情况外的其他异常,如果发生了其他的异常,并给出提示信息:“程序产生异常,原因为:+e”。
4.小结
异常处理机制是Java语言的重要机制,正确、合理地使用异常处理可以增强程序的可靠性和健壮性。本文从“什么是异常”入手,分析了Java异常引起的原因,对异常处理机制的三个重要环节进行了较深入的探讨,最后以一个简单的应用程序为例,分析了Java语言的异常处理过程,使我们清楚到看到Java语言强大的异常处理机制。
异常处理机制是一种安全高效的编程策略,是开发应用程序必不可少的部分,但在应用程序开发初期往往容易被忽略。 因此,做为一个合格的Java程序员来说,应该充分掌握Java语言的异常处理机制,在程序开发过程中尽可能的控制异常的发生,尽可能控制抛出大量的异常。
【参考文献】
[1]丁学钧,温秀梅.基于Delphi的异常处理机制及其应用研究[J].福建电脑,2005.7.
[2]耿祥义.Java基础教程(第3版)[M].北京:清华大学出版社,2012.5.
【关键词】Java语言;异常处理;应用
0.引言
Java异常是描述在代码段中发生的运行出错情况的对象。程序中的错误可能来自于如下两个方面问题:编译错误和运行错误。编译错误是由于所编写的程序存在语法问题,未能通过由源代码到目标代码的编译过程而产生的错误,它将由Java语言的编译系统负责检测和报告;运行错误是在程序的运行过程中产生的错误。在Java语言中,提供了一种独特的处理异常的机制,通过这种异常处理机制来处理程序中出现的错误,从而提高程序的容错性,使开发出来的程序更为健壮。
1.Java异常类的种类及引起异常的原因
1.1 Java异常类的种类
Java异常类的种类可分成两大类:(1)Error类:指的是Java运行环境出现的错误或系统错误,这些错误一般是很严重的错误,即使捕捉到也无法处理,由Java虚拟机生成并抛出,包括系统崩溃、动态链接失败、虚拟机错误等,在Java程序中不做处理。(2)Exception类:指一些可以被捕获且可能恢复的异常情况,是一般程序中可预知的问题。
1.2 Java异常引起原因
Java程序在运行过程中,可能会运行到非正常的执行状态,这些状态可能是由以下原因引起的:第一种情况:表达式的计算违反了Java 语言的规则,例如除法运算过程中被整数为0;在载入或链接Java 程序时出错;超出了某些资源限制,例如使用了太多的内存。
第二种情况,Java 程序代码中的throw 语句被执行。第三种情况,异步异常发生。异步异常的原因可能有:(1)Thread的stop方法被调用。(2)Java虚拟机内部错误发生。
2.Java中异常处理机制的三个重要环节
2.1抛出异常
抛出异常就是程序设计时当前代码中遇到了一个不知道怎么处理的情况,在程序代码中需要创建一个异常来将这个错误描述清楚,并且将这个异常抛出。异常被抛出之后面临两个路可走:首先是异常被捕捉并被处理,其次是讓方法继续抛出这个异常。
抛出异常的方式有两种:
(1)在方法代码中使用throw关键字来抛出实例化的异常对象。
(2)在方法声明中使用throws关键字抛出方法代码中throw关键字抛出的异常对象。
2.2传递异常
异常实例在方法代码中使用throw关键字被抛出后,如果是throws关键字后面的异常类列表的某个类型的实例,则方法将继续抛出这个异常,异常继续传递给方法的调用者,直到被处理掉或到达main()方法,异常传递main()方法之后,就会被Java平台处理掉。
2.3处理异常
处理异常就是根据异常类型,提供不同的catch语句进行处理,Java异常处理机制会将异常类型传递给匹配的catch语句,然后catch语句就可以根据异常对象的信息,具体问题分析,进行相应的补救措施,使程序可以继续运行下去。
Java异常处理机制采用以下三种方法来处理代码中产生的异常实例:
(1)try...catch语句捕获并处理异常,使用try…catch语句处理异常可以分为以下两种方式:
1)多类异常,分类处理;2)多类异常,一并处理。
语法格式如下:
Try{
异常代码 //根据异常类型,提供不同的catch语句分类进行处理
}catch(Exception1 e){
处理方法1
}catch(Exception2 e){
处理方法2
}
1)语法核心:使用try语句标记出可能异常的代码块,使用catch语句将这些异常按匹配规则进行处理。
2)匹配规则:异常实例的类型是catch语句的异常类型或是其子类,若一个catch语句的类型是Throwable类型,则可以用它来处理try语句块中抛出的所有异常。
(2)try…catch…finally语句块处理异常,其中finally语句块在正常情况下都会被执行,唯一不被执行的情况是方法执行了System.exit()方法。若一个异常没有被处理掉,在抛出之前会先finally之后再被抛出,即使在catch语句中使用return来结束程序,finally执行完后才返回return。Finally语句通常用来释放程序所占用的资源,如数据库查询异常的时候,释放JDBC连接等。
语法格式如下:
try{
异常代码
}catch(Exception e){
处理方法
}finally{
必须要执行的代码
}
(3)用throw语句处理异常,对于处理不了的异常或者要转型的异常,在方法的声明处通过throws关键字抛出异常或在代码中用throw关键字来抛出异常对象。
语法格式如下:
Public static void 方法名(参数)throws 异常对象
If 语句{
throw 异常对象;
}
3.Java异常处理机制在应用程序中的具体应用
本例设计一个应用程序完成课程成绩查询与输出工作,在一个数组中存储一个学生的2门课成绩,从键盘输入要选择查询的课程代码(1~2),输出对应的课程名称和成绩。为防止用户输入输入数据时可能发生的异常情况,在程序设计时特设计了异常处理过程。 3.1应用程序主要代码
import java.util.InputMismatchException;
import java.util.Scanner;
public class four {
public static void main(String[] args){
int[] classScore={82,87,92};//声明一个数组且初始化值
Scanner input=new Scanner(System.in);//新建一个键盘输入对象
System.out.println("请输入要查询的课程代码:");try{
int i=input.nextInt(); //输入一个整数
int result=score[i-1];
System.out.println("课程名称\t成绩");
if(i==201)//课程代码判断
System.out.println("大学语文:\t");
else if(i==202)
System.out.println("Android应用开发:\t");
System.out.println(result);//输出课程的成绩
}catch(InputMismatchException e){//异常捕获及处理
System.out.println("输入课程代码不正确!");
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("數组下标越界!");//异常捕获及处理
}catch(Exception e){
System.out.println("程序产生异常,原因为:"+e);
}finally{
System.out.println("程序结束!");
}
}
}
3.2应用程序异常处理分析
在这个应用程序中,程序开发人员设计了三个catch语句来对可能的异常进行处理,增强程序的健壮性。异常处理如下:
(1)能够自动判断输入数据是不是合法的数字数据,如果不是,第一个catch语句将捕获“InputMismatchException”异常,中止程序运行,给出提示信息:“输入不正确,请检查!”。
(2)能够自动判断输入的数据是否超出了范围,超出了范围会导致此程序中数组下标越界,第二个catch语句将捕获到“ArrayIndexOut
OfBoundsException”异常,中止程序运行,并给出提示信息:“数组下标越界!”。
(3)其他异常检测,本例中通过“Exception”语句,来捕获上面两种之外情况外的其他异常,如果发生了其他的异常,并给出提示信息:“程序产生异常,原因为:+e”。
4.小结
异常处理机制是Java语言的重要机制,正确、合理地使用异常处理可以增强程序的可靠性和健壮性。本文从“什么是异常”入手,分析了Java异常引起的原因,对异常处理机制的三个重要环节进行了较深入的探讨,最后以一个简单的应用程序为例,分析了Java语言的异常处理过程,使我们清楚到看到Java语言强大的异常处理机制。
异常处理机制是一种安全高效的编程策略,是开发应用程序必不可少的部分,但在应用程序开发初期往往容易被忽略。 因此,做为一个合格的Java程序员来说,应该充分掌握Java语言的异常处理机制,在程序开发过程中尽可能的控制异常的发生,尽可能控制抛出大量的异常。
【参考文献】
[1]丁学钧,温秀梅.基于Delphi的异常处理机制及其应用研究[J].福建电脑,2005.7.
[2]耿祥义.Java基础教程(第3版)[M].北京:清华大学出版社,2012.5.