当前位置 : IT培训网 > Java开发 > Java教程 > Java编程中 try语句的嵌套

Java编程中 try语句的嵌套

时间:2016-08-05 17:29:54  来源:Java培训网  作者:IT培训网  已有:名学员访问该课程
关于“Java编程中 try语句的嵌套”方面的知识点就介绍到这里了,你学会了吗,能独自写程序了吗,如果没有问题了,赶紧进入下一节学习吧!

学习try语句的嵌套难吗,怎么样才可以学好这方面的知识呢,今天IT培训网Java培训专家来给大家介绍下吧!

如何理解try语句的嵌套?

Try语句可以被嵌套。也就是说,一个try语句可以在另一个try块内部。每次进入try语句,异常的前后关系都会被推入堆栈。如果一个内部的try语句不含特殊异常的catch处理程序,堆栈将弹出,下一个try语句的catch处理程序将检查是否与之匹配。这个过程将继续直到一个catch语句匹配成功,或者是直到所有的嵌套try语句被检查耗尽。如果没有catch语句匹配,Java的运行时系统将处理这个异常。下面是运用嵌套try语句的一个例子:

// An example of nested try statements.

class NestTry {

    public static void main(String args[]) {

        try {

            int a = args.length;

            /* If no command-line args are present,the following statement will generate a divide-by-zero exception. */

            int b = 42 / a;

            System.out.println("a = " + a);

            try { // nested try block

                /* If one command-line arg is used,then a divide-by-zero exception will be generated by the following code. */

                if(a==1) a = a/(a-a); // division by zero

                /* If two command-line args are used,then generate an out-of-bounds exception. */

                if(a==2) {

                    int c[] = { 1 };

                    c[42] = 99; // generate an out-of-bounds exception

                }

            } catch(ArrayIndexOutOfBoundsException e) {

                System.out.println("Array index out-of-bounds: " + e);

            }

        } catch(ArithmeticException e) {

            System.out.println("Divide by 0: " + e);

        }

    }

}

如你所见,该程序在一个try块中嵌套了另一个try块。程序工作如下:当你在没有命令行参数的情况下执行该程序,外面的try块将产生一个被零除的异常。程序在有一个命令行参数条件下执行,由嵌套的try块产生一个被零除的错误。因为内部的块不匹配这个异常,它将把异常传给外部的try块,在那里异常被处理。如果你在具有两个命令行参数的条件下执行该程序,由内部try块产生一个数组边界异常。下面的结果阐述了每一种情况:

C:\>java NestTry

Divide by 0: java.lang.ArithmeticException: / by zero

C:\>java NestTry One

a = 1

Divide by 0: java.lang.ArithmeticException: / by zero

C:\>java NestTry One Two

a = 2

Array index out-of-bounds: java.lang.ArrayIndexOutOfBoundsException

当有方法调用时,try语句的嵌套可以很隐蔽的发生。例如,你可以把对方法的调用放在一个try块中。在该方法内部,有另一个try语句。这种情况下,方法内部的try仍然是嵌套在外部调用该方法的try块中的。下面是前面例子的修改,嵌套的try块移到了方法nesttry( )的内部:

/* Try statements can be implicitly nested via calls to methods. */

class MethNestTry {

    static void nesttry(int a) {

        try { // nested try block

            /* If one command-line arg is used,then a divide-by-zero exception will be generated by the following code. */

            if(a==1) a = a/(a-a); // division by zero

            /* If two command-line args are used,then generate an out-of-bounds exception. */

            if(a==2) {

                int c[] = { 1 };

                c[42] = 99; // generate an out-of-bounds exception

            }

        } catch(ArrayIndexOutOfBoundsException e) {

            System.out.println("Array index out-of-bounds: " + e);

        }

    }

    public static void main(String args[]) {

        try {

            int a = args.length;

           /* If no command-line args are present,the following statement will generate a divide-by-zero exception. */

           int b = 42 / a;

           System.out.println("a = " + a);

           nesttry(a);

        } catch(ArithmeticException e) {

            System.out.println("Divide by 0: " + e);

        }

    }

}

该程序的输出与前面的例子相同。

关于“Java编程中 try语句的嵌套”方面的知识点就介绍到这里了,你学会了吗,能独自写程序了吗,如果没有问题了,赶紧进入下一节学习吧!

顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------
Java教程
1、Java 概述
1.1 Java语言概述
1.2 Java虚拟机以及跨平台原理
1.3 Java的主要就业方向
1.4 Java的不同版本
1.5 Java开发环境搭建
1.6 第一个Java程序示例
1.7 Java类和对象的概念
1.8 Java类库及其组织结构
1.9 Java import
2、Java 语法基础
2.1 Java数据类型以及变量的定义
2.2 Java数据类型转换
2.3 Java运算符
2.4 Java流程控制
2.5 Java数组的定义和使用
2.6 Java字符串(String)
2.7 Java StringBuffer与StringBuider
2.8 强调一下编程风格
3、Java 类与对象
3.1 Java类的定义及其实例化
3.2 Java访问修饰符
3.3 Java变量的作用域
3.4 Java this关键字详解
3.5 Java方法重载
3.6 Java类的基本运行顺序
3.7 Java包装类、拆箱和装箱详解
3.8 再谈Java包
3.9 源文件的声明规则
4、Java 继承和多态
4.1 继承的概念与实现
4.2 Java super关键字
4.3 继承中的方法的覆盖和重载
4.4 多态和动态绑定
4.5 instanceof 运算符
4.6 多态对象的类型转换
4.7 Java static关键字
4.8 Java final关键字
4.9 Java Object类
5、面向对象高级特性
5.1 Java内部类及其实例化
5.2 内部类的分类
5.3 抽象类的概念和使用
5.4 接口的概念和使用
5.5 接口和抽象类的区别
5.6 Java 泛型
5.7 泛型通配符和类型参数的范围
6、异常处理
6.1 异常处理基础
6.2 异常类型Java语言中常见的异常类型有哪些
6.3 未被捕获的异常
6.4 try和catch的使用
6.5 多重catch语句的使用
6.6 try语句的嵌套
6.7 throw:异常的抛出
6.8 throws子句
6.9 finally块
6.10 Java的内置异常
6.11 创建自己的异常子类
6.12 断言
7、线程编程
7.1 线程的概念
7.2 Java线程模型
7.3 主线程
7.4 创建线程
7.5 创建多线程
7.6 isAlive()和join()的使用
7.7 线程优先级
7.8 线程同步
7.9 线程间通信
7.10 线程死锁
7.11 线程的挂起、恢复和终止
8、输入输出(IO)操作
8.1 输入输出基本概念
8.2 面向字符的输入流
8.3 面向字符的输出流
8.4 面向字节的输入输出流
8.5 面向字节流的应用
8.6 文件与目录管理
8.7 文件的随机读写
8.8 文件的压缩处理
9、常用类库、向量与哈希
9.1 Java基础类库
9.2 Object类
9.3 Java语言包(java.lang)简介
9.4 日期和时间类
9.5 向量及其应用
9.6 哈希表及其应用
10、图形界面(GUI)设计
10.1 图形界面设计基础
10.2 框架窗口
10.3 标签、按钮和按钮事件
10.4 面板
10.5 布局设计
10.6 文本框和文本区
10.7 文本框和文本区的输入输出
10.8 选择框和单选按钮
10.9 列表和组合框
10.10 菜单
10.11 对话框
10.12 滚动条
10.13 鼠标事件
10.14 键盘事件
11、图形、图像与多媒体
11.1 绘图基础
11.2 设置字型和颜色
11.3 绘图模式
11.4 Graphics类的绘图方法
11.5 Graphics2D类的绘图方法
11.6 图像处理基础
11.7 图像缓冲技术
11.8 多媒体基础
12、网络与数据库编程
12.1 IP地址和InetAddress类
12.2 统一资源定位符
12.3 套接字(Socket)
12.4 数据库连接
12.5 几个重要的类和接口
12.6 数据库查询
12.7 数据库更新
12.8 插入记录
12.9 修改记录
12.10 删除记录