Java处理程序异常错误

为了保证程序有效地执行,需要对发生的异常进行相应的处理。在Java中,如果某个方法抛出异常,既可以在当前方法中进行捕捉,然后处理该异常,也可以将异常向上抛出,由调用者来处理。

 

一、错误

异常产生后,如果不做任何处理,程序就会被终止,示例如下:

public class Thundering {
	public static void main(String args[]) {
		String str = "lili";
		System.out.println(str+"年龄是:");
		int age = Integer.parseInt("20L");
		System.out.println(age);
	}
}
/*输出结果如下:
java.lang.NumberFormatException: For input string: "20L"
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
	at java.base/java.lang.Integer.parseInt(Integer.java:658)
	at java.base/java.lang.Integer.parseInt(Integer.java:776)
	at ThePart12/test.Thundering.main(Thundering.java:7)

*/

从上述例子可以看出,报出了NumberFormatException异常,提示信息“lili年龄是:”已经输出,而变量age没有输出,所以是在 执行类型转换代码时出差了。

 

二、捕捉异常

Java语言的异常捕获结构由try、catch和finally三部分构成。其中try语句块存放的是可能发生异常的Java语句;catch程序块在try语句块之后,用来激发捕获异常;finally语句块是异常处理结构的最后执行部分,无论try语句块如何退出,都将执行finally块,语法如下:

try{
    //程序代码块
}
catch(Exceptiontype1 e){
    //对Exceptiontype1的处理
}
catch(Exceptiontype2 e){
    //对Exceptiontype2的处理
}
...
finally{
    //程序块
}

1、try-catch语句块

示例如下:

public class Take {
	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");//输出信息
	}
}
/*输出结果如下:
lili年龄是:
java.lang.NumberFormatException: For input string: "20L"
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
	at java.base/java.lang.Integer.parseInt(Integer.java:658)
	at java.base/java.lang.Integer.parseInt(Integer.java:776)
	at ThePart12/test.Take.main(Take.java:8)
program over
*/

从输出结果可以看出,程序仍然输出最后的提示信息,没有因为异常而终止,说明当try语句块中的代码出现错误时,就会跳转到catch代码块中的执行,执行完后继续执行catch语句块后的代码。

通常,异常处理常用以下3个函数来获取异常相关的信息:

(1)getMessage()函数:输出错误性质

(2)toString()函数:给出异常的性质和类型

(3)printStackTrace()函数:输出异常的类型、性质、战层次及出现在程序中的位置

 

2、finally语句块

完整的异常处理语句一定要包含finally语句,无论程序中有无异常发生,并且无论直接的try-catch是否顺利执行完毕,都会执行finally语句。

在以下几种特殊情况下,finally语句不会执行:

(1)在finally语句块中发生异常

(2)在前面的代码中使用了System.exit()退出程序

(3)程序所在的线程死亡

(4)关闭CPU

发布了61 篇原创文章 · 获赞 1 · 访问量 1339

猜你喜欢

转载自blog.csdn.net/qq_29440983/article/details/103619422