Java异常处理(更新中)

一、什么是异常

异常是一个发生在程序执行期间的事件,它中断了正在执行的程序的正常指令流。

package swf;
public class Test {
	public static void main(String[] args){
		int result = 3/0;
		System.out.println(result);
	}
}

运行结果为:

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at swf.Test.main(Test.java:14)

程序运行的结果报告发生了算数异常ArithmeticException,系统不再执行下去。这种情况就是异常。

二、异常处理方法:捕捉异常,抛出异常。

例1(捕捉异常):

将一个字符串转换为整型,正常情况下可通过Integer类的parseInt()方法实现。但是当该字符串不是数字形式,parseInt()方法就会抛出异常,程序将在出现异常的位置终止,不再执行下面的语句。

package swf;
public class Test {
	public static void main(String[] args){
		String str = "lili";
		System.out.println(str+"年龄是:");
		int age = Integer.parseInt("20L");
		System.out.println(age);
	}
}

运行结果为:

lili年龄是:
Exception in thread "main" java.lang.NumberFormatException: For input string: "20L"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at swf.Test.main(Test.java:7)

我们发现提示信息“lili年龄是:”已经输出,所以该句之前没有异常,而变量age没有输出,可知程序在执行数据类型转换时已经终止。

Java语言的异常捕获结构由try、catch、finally3部分组成,try-catch语句块语法如下:

package swf;
public class Test {
	public static void main(String[] args){
		try{
			String str = "lili";
			System.out.println(str+"年龄是:");
			int age = Integer.parseInt("20L");
			System.out.println(age);
		}catch(Exception e){
			e.printStackTrace();
		}
		System.out.println("program over");
	}
}

其中try语句块存放的是可能存在异常的Java语句,当try语句块里的语句发生异常时,程序就会跳转到catch块中执行。

lili年龄是:
java.lang.NumberFormatException: For input string: "20L"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at swf.Test.main(Test.java:25)
program over

另外,完整的异常处理语句应包括finally语句。无论程序中有无异常发生,无论try-catch是否顺利执行,都会执行finally语句。(不包括finally语句中存在异常的情况)

例2(捕捉异常):


你可能感兴趣的:(异常)