Java虚拟机异常类处理机制研究
2019-09-10金英华孙丽
金英华 孙丽
摘 要:程序错误包括两种:语法错误(编译错误)和运行错误(异常)。语法错误是指由于输入程序时的语句错误,导致程序无法通过编译系统而产生的错误。Java语言语法中关键字或者标识符要区分大小写,以及要正确地输入Java语句,编写程序设计时要遵守这些规则,否则编译时就会出现错误,需要程序员调试修正。运行错误是程序在运行过程中产生的错误, 数组下标不能越界,除数不能为零和引用文件无法找到等等,这类错误属于是运行错误, 异常处理就是针对这些运行错误进行控制和处理的。
关键词:Java,异常类,Error,Exception
1、异常的定义
就是在程序运行时由代码所产生的不正常状态。换句话来说,异常就是一个运行错误。
异常处理的关键词有:try、catch、finally 、throw、throws,共5个。
2、异常的结构
类Thorwable是所有错误类(Error)和异常类(Exception)的父类,如图1所示。
Error类及其子类由Java虚拟机生成并抛出,由系统接收并处理,程序员无法通过调整程序代码来避免这种错误,例如,Java虚拟机运行错误(Virtual MachineError)和类定义错误(NoClassDefFoundError)等。
Exception 类是所有异常类的父类,其子类可分为: RuntimeException和其它型异常。其中,运行异常是程序运行过程中出现的问题,例如,引用对象为空、除数为零或数组越界,则分别引发运行时异常NullPointerException、ArithmeticException和 ArrayIndexOutOfBoundException。
图1
3、异常处理的机制
(1)try...catch关键字
try/catch代码使用语法如下:
try{
// 程序代码
}
catch(异常类型1 异常的变量名1)
{
// 程序代码
}
catch(异常类型2 异常的变量名2)
{
// 程序代码
}
……
(2)finally关键字
finally 代码块出现在 catch 代码块最后并且一定处理,语法如下:
try{
// 程序代码
}
catch(异常类型1 异常的变量名1)
{
// 程序代码
}
catch(异常类型2 异常的变量名2)
{
// 程序代码
}
……
Finally
{
// 程序代码
}
4、异常类的应用
本实例从命令行输入两个数,用第一个数除以第二数,输出运算结果。如果命令行没有输入参数或者参数不足,则会捕捉ArrayIndexOutOfBoundsException异常;如果输入的参数不是数字,则会捕捉NumberFormatException异常;如果第二个参数为0,则会捕捉ArithmeticException异常,输入正确两个数,则两个数相除并打印出相应的信息。
行号 lsxc.java
1 public class lsxc
2 {
3 public static void main(String args[])
4 {
5
6 try
7 {
8 double a[]=new double [2];
9 double c;
10 for(int i=0;i<2;i++)
11 a[i]=Double.parseDouble(args[i]);
12 c=a[0]/a[1];
13 System.out.println(c);
14 }
15 catch(ArrayIndexOutOfBoundsException e)
16 {
17 System.out.println("没有参数或参数不足!!!");
18 }
19 catch(NumberFormatException e)
20 {
21 System.out.println("您输入的不是数字!!!");
22 }
23 catch(ArithmeticException e)
24 {
25 System.out.println("除數不能为零!!!");
26 }
27 }
28 }
捕捉ArrayIndexOutOfBoundsException异常的运行结果,如图2所示。
图2
5、结论
Java语言中的异常事件分为两大类,即Error(错误)和Exception(异常)。Exception类中定义了程序可能遇到的很多异常情况,发生异常情况时,可以编写代码处理可能出现的异常情况,而不影响程序的继续执行。
参考文献
[1]李卓玲.Java程序设计实用教程.大连理工大学出版社,2005.
[2] 迟勇.Java语言程序设计.大连理工大学出版社,2013.
[3] 迟勇.Java语言程序设计实验及实训指导.大连理工大学出版社,2013.