第6章 java 异常处理

第6章 java 异常处理

ID:40232513

大小:411.00 KB

页数:51页

时间:2019-07-27

第6章 java  异常处理_第1页
第6章 java  异常处理_第2页
第6章 java  异常处理_第3页
第6章 java  异常处理_第4页
第6章 java  异常处理_第5页
资源描述:

《第6章 java 异常处理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第6章异常处理6.1异常的概念6.2Java语言异常的处理6.3异常的类型实训六处理并创建异常习题六6.1异常的概念6.1.1案例程序在执行过程中可能会发生多种严重程度不同的错误,这些错误与编译错误不同,不是程序语法的错误,而是由运行时遇到的一些特殊情况引起的。例如,由于网络的问题不能正常从网络服务器获取数据。程序运行时发生错误,Java语言称之为异常,它会使程序的运行流程发生改变。对于异常可以采取多种方式进行处理,如终止程序运行,这是最简单的方法。当然,大多数情况下用户不希望采取这种处理方法。当发生错误时,

2、用户一般会希望程序能够给出足够的错误信息,继续运行。因此,一个好的程序员在编写程序时,必须预测程序执行过程中可能发生的各种异常情况。Java语言提供了一种不同于传统程序设计语言的异常处理方法,使程序员可以方便地检测和处理各种异常情况。下面先看一个例子。【程序6.1】异常处理方法演示。publicclassExceptionDemo{staticint[]IntArrayAdd(int[]a,int[]b){int[]c=newint[a.length];for(inti=0;i

3、i]=a[i]+b[i];returnc;}publicstaticvoidmain(String[]args){int[]a=newint[20];int[]b=newint[10];for(inti=0;i<20;i++)a[i]=i;for(inti=0;i<10;i++)b[i]=i;try{int[]c=IntArrayAdd(a,b);for(inti=0;i

4、println("Thereisanerror!");}}}程序运行结果为:Thereisanerror!从第3章有关数组的知识可以知道,程序6.1的main方法在调用方法IntArrayAdd对数组b访问时下标超界,产生一个异常。由于程序6.1采用了Java语言中的异常处理方法,程序执行流程发生变化,转到语句System.out.println(“Thereisanerror!”)执行。6.1.2异常处理传统的程序设计语言,例如C,需要程序员检测错误发生的原因并进行处理,这样,就需要在正常执行流程中增加一些

5、if-else语句或switch-case语句来检测函数的返回值或全局的错误代码,判断发生了什么类型的错误。这种处理方法使得程序的流程变得复杂,难以阅读理解,而Java语言的异常处理机制使得错误信息的处理和流程控制变得很简单。观察一下程序6.1可以发现,程序中的错误在IntArrayAdd方法中发生,但是该方法中并没有错误处理语句,既没有用返回值标志错误发生,也没有设置一个main方法和IntArrayAdd方法可以共同访问的变量用于传递错误信息。那么,错误信息是怎样从IntArrayAdd方法传递到main

6、方法的呢?实际上IntArrayAdd方法在超界访问数组元素时抛掷了一个异常,创建了一个异常对象用于存储错误信息,由于IntArrayAdd方法没有处理该异常,Java虚拟机终止IntArrayAdd方法的执行,然后自动返回到main方法,将流程转入异常处理部分。与传统的错误处理方法相比,Java语言的异常处理机制有很多优点。它将错误处理代码从常规代码中分离出来,例如程序6.1的main方法中先调用IntArrayAdd方法然后输出结果,中间并没有插入错误处理的代码,而按照传统的方法程序的结构应该是这样的:调

7、用IntArrayAdd方法if(发生错误)输出错误信息else输出结果当错误类型较多,需要分别处理时,采用这种方法很显然会使程序流程变得十分复杂。异常处理机制带来的另一个好处是错误的传播,Java异常会自动在方法调用堆栈中传播,例如程序6.1异常从IntArrayAdd方法自动传递到main方法。另外,Java异常处理机制克服了传统方法的错误信息有限的问题,可以针对不同的错误类型定义不同的异常类,异常处理机制会根据异常对象的类型寻找匹配的错误处理代码。6.2Java语言异常的处理6.2.1try-catch

8、块Java语言中异常的捕捉是通过try-catch块来实现的,语法形式为:try{//程序正常的流程,有可能抛掷异常}catch(异常类名异常对象名){//错误的处理}finally{//如果try部分代码执行完或catch部分代码执行完,则执行该部分代码}try块为程序正常的流程,如果发生异常,则终止try块的执行转入catch块。对于一个try块,可以有多个catch块,每个catch后的异常类

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。