异常的基本概念

异常是导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,才能保证程序正常执行。

***************

任何程序都可能存在问题,很难做到百分百完美

***************

1.为什么需要异常处理

在没有异常处理的语言中就必须使用判断语句,配合所想到的错误状况来扑捉程序中所有的错误,但是为了扑捉这些错误,编写出来的程序代码常有大量的判断语句,有时候这样也未必能捕捉到所有的错误,还会导致程序运行效率降低。

  java异常处理正好弥补了这一个缺陷,

范例:认识异常

package test1;

public class ExceptionDemo01 {
	public static void main(String[] args) {
		System.out.println("*****计算开始********");
		int i = 10;
		int j = 0;
		int temp = i / j;
		System.out.println("两个数字相处结果:" + temp);
		System.out.println("*******计算结束*******");
	}
}

  结果:

*****计算开始********
Exception in thread "main" java.lang.ArithmeticException: / by zero
at test1.ExceptionDemo01.main(ExceptionDemo01.java:8)

2.在程序中使用异常处理

【异常处理格式】

try{

//可能出现异常的语句

catch(异常类 异常对象){

//编写异常处理语句

...

[finally{一定会运行到的程序代码}]

范例:

package test1;

public class ExceptionDemo01 {
	public static void main(String[] args) {
		System.out.println("*****计算开始********");
		int i = 10;
		int j = 0;
		try {
			int temp = i / j;
			System.out.println("两个数字相处结果:" + temp);
		} catch (Exception e) {
			System.out.println("出现异常:" + e);
		}

		System.out.println("*******计算结束*******");
	}
}

  

*****计算开始********
出现异常:java.lang.ArithmeticException: / by zero
*******计算结束*******

这样程序就可以正常结束

3.异常类的继承结构

在整个java的异常结构中,实际上有两个最常用的类,分别为Exception和Error,这两个类全部是Throwable的子类,

①.Exception:一般表示的是程序中出现的问题,可以直接使用try'...catch处理

②.Error:一般指的是JVM错误,程序中无法处理

而算数异常,数字格式异常等都属于Exception的子类

***********

异常信息的输出方式

在catch语句输出异常时,除了可以直接使用“system.out.println(异常对象)”的方式打印异常信息外,有时候也会直接使用Exception类中的printStackTrace()方法输出异常信息,如:

e.printStackTrace();

使用这种打印异常方式是最完整的。

4.java的异常处理机制

 异常处理的步骤:

 ①.一旦产生异常,则首先会产生一个异常类的实例化对象

 ②.在try语句中对此异常对象进行捕捉

 ③.产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码

.....明天继续....

package test2;

public class ExceptionDemo06 {
	public static void main(String args[]) {
		System.out.println("------计算开始---------");
		int i = 0;
		int j = 0;
		try {
			String str1 = args[0];
			String str2 = args[1];
			i = Integer.parseInt(str1);
			j = Integer.parseInt(str2);

			int temp = i / j;
			System.out.println("结果是:" + temp);
		} catch (ArithmeticException e) {
			System.out.println("算数异常:" + e);
		} catch (NumberFormatException e) {
			System.out.println("数字转换异常:" + e);
		} catch (ArrayIndexOutOfBoundsException e) {
			System.out.println("数组越界异常:" + e);
		}

		catch (Exception e) {
			System.out.println("其他异常:" + e);
		}
	}
}

  注意:在java中所有捕获范围小的异常必须放在捕获大的异常之前。否则程序在编译时就会出现错误。后面的异常就不会被处理。

 

      

posted on 2011-12-07 19:32  wangbokun  阅读(274)  评论(0编辑  收藏  举报

导航