专业的JAVA编程教程与资源

网站首页 > java教程 正文

Android应用编程基础第20篇:Java异常处理实例分析

temp10 2025-01-03 19:04:23 java教程 12 ℃ 0 评论

上一篇我们讲了Java语言中的异常处理机制,包括基本概念和整体的处理流程,以及try、catch、finally关键字的使用。本篇我们将通过实例来具体讲解。

让我们先看下面这个异常的实例:

Android应用编程基础第20篇:Java异常处理实例分析

01public class TestException_1

02{

03public static void main(String args[])

04{

05int array[]=new int[5];// 容许 5 个元素

06array [10]=7;// 下标值超出所容许的范围

07System.out.println("main()方法结束!");

08}

09}

上面的代码在编译的时候不会出现任何错误,但是在运行时执行到第6行就会产生错误,并输出以下信息:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10

at TestException_1.main(TestException_1.java:6)

错误的原因是数组下标超出了最大允许的范围。Java 发现这个错误之后,便由系统抛出“ArrayIndexOutOfBoundsException”这个种类的异常,用来表示错误的原因。如果没有相应的处理异常的程序代码,Java 的默认异常处理机制会先抛出异常,然后终止程序运行。

程序在第6行抛出异常后变停止了,根本不会运行到第7行。如果我们想要程序能运行到最后,就需要在抛出异常的位置加上异常处理的代码。因此我们将TestException_1做一些修改,请看TestException_2。

01public class TestException_2

02{

03public static void main(String args[])

04{

05try//try代码块

06{

07int array[]=new int[5];

08array [10]=7;//出现异常,数组越界

09}

10catch(ArrayIndexOutOfBoundsException e)

11{

12System.out.println("数组超出绑定范围!");

13}

14finally// finally代码块的程序代码一定会执行

15{

16System.out.println("这里一定会被执行!");

17}

18System.out.println("main()方法结束!");

19}

20}

输出结果:

数组超出绑定范围!

这里一定会被执行!

main()方法结束!

程序说明:

1、第 5~9 行的 try 代码块是用来检查是否会有异常发生。

2、当try代码块中有异常发生,且抛出的异常属于ArrayIndexOutOfBoundsException 类时,则会运行第 10~13 行的catch代码块。

3、 程序第 7 行声明一个array 的整型数组,并开辟了 5 个数据空间。

4、 程序第 8 行为数组中的第 10 个元素赋值,此时已经超出了该数组本身的范围(就是我们俗称的数组越界),所以会出现异常,抛出的是ArrayIndexOutOfBoundsException类的异常。发生异常之后,程序语句转到 catch 语句中去处理,输出“数组超出绑定范围!”字符串。

5、异常处理完后程序走进 finally代码块,输出“这里一定会被执行!”字符串。

6、直到最后方法结束,输出“main()方法结束!”字符串。

由TestException_2可看出,通过异常的机制,即使程序运行时发生问题,只要能捕捉到异常,程序便能顺利地运行到最后。

异常处理的方法可以看下图:

图1 异常处理的方法

从图1中可以看到TestException_1和TestException_2是两种不同的异常处理的方法。

1.TestException_1是Java默认的异常处理方法,在发生异常时会抛出异常并输出异常信息,然后程序便会终止运行。

2. TestException_2是通过自行编写try-catch-finally块来捕捉异常并输出提示信息。在实际使用中,我们可以在catch代码块中加入一些自定义的提示信息,方便后期定位错误修复错误。

最后让我们用一个段子结束今天的文章。

“世界上最真情的相依,是你在try我在catch,无论你发神马脾气,我都默默承受,静静处理。”

感谢大家!

----------

微价值网(公号vjiazhi),关注移动互联网,以及APP产品/技术/推广,提供最有价值的干货文章。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表