Java异常处理机制及其在项目中的应用
java 异常处理技巧

java 异常处理技巧(实用版4篇)目录(篇1)I.异常处理的概念和重要性1.异常处理的基本概念2.异常处理在软件开发中的重要性II.Java 异常处理机制1.Java 异常处理的基本原理2.try-catch 语句的使用3.throw 和 throws 关键字的使用III.Java 异常处理技巧1.避免使用 catch-all 异常处理2.使用 try-with-resources 语句3.自定义异常类4.使用日志记录异常信息正文(篇1)Java 异常处理是软件开发中非常重要的一部分,它可以帮助开发人员更好地处理程序中的错误和异常情况。
Java 提供了丰富的异常处理机制,包括 try-catch 语句、throw 和 throws 关键字等。
以下是一些Java 异常处理的技巧,可以帮助开发人员更好地处理异常情况。
避免使用 catch-all 异常处理:catch-all 异常处理是一种非常常见的异常处理方式,它捕获所有未被其他 catch 块捕获的异常。
虽然这种方式可以简化代码,但是它可能会导致程序出现更多的错误。
因此,建议使用更为具体的异常处理方式,如按照类型、位置等进行分类。
使用 try-with-resources 语句:try-with-resources 语句可以自动关闭资源,如文件、数据库连接等。
在使用 try-with-resources 语句时,必须在 try 代码块中使用 resources 关键字,并在 finally 代码块中关闭资源。
这样可以避免因程序异常而忘记关闭资源的情况。
自定义异常类:自定义异常类可以让程序更加清晰易懂,并且可以更好地描述问题。
在自定义异常类时,建议使用英文单词或简短的描述,以便于阅读和理解。
使用日志记录异常信息:在程序中记录异常信息可以帮助开发人员更好地诊断问题,并快速找到问题的根源。
目录(篇2)I.异常处理的重要性1.提高程序的健壮性和可靠性2.避免程序崩溃或出现意外的行为3.帮助开发人员进行调试和定位问题II.Java中常用的异常处理方式1.异常处理的基本语法2.自定义异常类3.使用try-catch语句处理异常4.使用throws关键字抛出异常5.使用finally语句块确保资源被正确释放III.异常处理技巧1.合理使用异常信息2.避免过度使用异常处理3.了解不同类型的异常及其适用场景4.编写可读性强的异常处理代码正文(篇2)Java异常处理是Java编程中非常重要的一部分,它可以帮助开发人员编写更健壮、更可靠的程序。
JAVA教程(程序异常处理)(精)

程序异常处理引子O在调试航班体息录入程冲•时.町能会遇到这歼的情爲:应用程斤运行过程中.突然中止,屛棗上出现一丸堆英丈让人不知所培・o崔许多域市.很行ATM机随处可见,取歇非常方使•崔ATM机上取欲必须扶輒一定钓步裝携作.若挨作出会相应的災示传息.指导你下一步地楼作.比如密码输入错谖.ATM机将会显示诗码输入错谋・请重新输入”的消息•如是三次密碣伦入梆有谋.則呑卡没商量.o尢论什么斥因引起的程斤运行不正常.都认为是悝序出现了并常.知识要点。
异常的概念。
常见的异常情况。
异常处理的机制◎利用try catch finally实现异常处理o利用thro灵throws创建用户自定义异常知识学习一异常概念。
异常一血巾把程序运行中可能遇到的错罠分为两类.一类是非致命的.的过某种修正后程号还能键续执行.这类捲谖称为异常.边是一类特殊的运行错误対象. 另一类是致命的.即程序遇到了非常严重的不正常状态,不能简单地恢复轨行,这就是钳渓.叩异常类基类throwablcift生出两个子类:Error类:定义了Java程序运行时出现了灾难性失败的畀常.一股来说java程序不捕获也不拋出^Error的对象(包把动态磁接失败.虛拟机错逞等)•而只处理Except ion类的各子类对Exception类:定义了程序可以捕捉到的异常。
异営分两类:1)条统定义的2)用户定义的;・:・异常处理一对于异常,Java使用一种错误捕获方法进行) 处理,称为异常处理. 1斗处理异常的两种方式-是将异常交田Jam异常处理机制的预设处理方法来处理。
二是利用Java提供的try-cat ch-final ly语句对于㊁能出现的异常作预先处理。
"融辜习一程序运行的错误类型及位置识学习程序ArithmeticException 算术异常整数除法中,如果除数为0,则发生该类井常.Java虛拟机遇到这样的错i昊时会中止程序的执行流程,并新建~个ArithmeticException类的对象.即拋出一个算术运算异常.例如下面的程序将引发ArithmeticException异常:public class Test ArithmeticExceptionfpublic static void main(String args[])(int denominator=0,numerator=20jesult=0;resultanumerator/denominator;〃除数为0,将引发ArithmeticException异席System.out.prlntln(result);知识学习一程序运行的错误类型及位置NullPointerExcept ion异常发生的原因.通常是由于应用程序企图在某个需要的对鮫上使用mil I值。
Java异常处理技术及应用

浅谈Java异常处理技术及应用摘要:随着系统规模的不断扩大,传统的异常处理技术已经成为创建大型可维护程序的障碍了。
java是一种面向对象的程序设计语言,java的异常处理非常出色。
java把异常封装到类里,运用“try/catch/finally”异常处理机制,最终得到的是更为“健壮”的异常处理代码。
关键字:异常处理 java应用一、前言异常是在程序运行过程中发生的非正常事件。
比如:除零溢出、数组越界、内存溢出等。
这些事件的发生将阻止程序的正常运行。
为了加强程序的健壮性,程序设计时,必须考虑到可能发生的异常事件并做相应的处理。
传统的错误处理方法一般以判断返回值的方式处理错误,使得正常程序代码和错误代码混合在一起,给程序维护带来很大的障碍。
java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,据有良好的层次性。
这种异常处理机制能将处理错误异常的代码和“常规”代码分开,使程序维护起来更加方便,同时也增强了程序的安全性和健壮性。
和java语言的其它特性相比,异常处理显得深奥且不易掌握。
因为它和java运行时系统密切相关,本文着重就java语言的异常处理机制及在程序设计中的应用作一个初步的探讨。
二、异常类的结构及组成java中的throwable(抛出)类是一个专门处理异常的类。
它派生了两个子类:error(出错)类和exception(异常)类。
error 类对象是由java虚拟机生成并抛出给系统。
通常,java 程序不对错误进行处理;exception 类对象是java程序抛出和处理的对象。
它又分为runtimeexception(运行期间异常)、awt ex-ception(awt 异常)和io exception(输入输出异常),这三种子类分别对应于不同类型的异常。
另外,用户根据需要可以自己定义异常类。
三、异常的处理1、处理机制java 中使用异常类及其子类对程序出现的各种异常事件给出了一个统一的、简单的抛出错误和处理错误的机制,可以概括为以下几个过程:(1)在java程序的执行过程中,如果出现了一个可识别的的错误,则会生成一个与该错误相对应的异常类对象,该对象将被提交给运行时的系统,这个过程称为抛出(throw)异常。
Java异常体系和异常处理机制

Java异常体系和异常处理机制异常简介在程序运⾏过程中出现错误,导致程序出现⾮预期场景。
异常处理可以保证出现错误后,控制接下来的程序流程,是选择定位错误信息,还是抛出异常或捕获异常、还是避免程序⾮正常退出,都取决于我们。
Java的异常体系结构(来⾃⽹络)Java把异常作为⼀种类,当做对象来处理。
所有异常类的基类是Throwable类,两⼤⼦类分别是Error和Exception。
这些异常类可以分为三种类型:系统错误、异常和运⾏时异常。
系统错误由Java虚拟机抛出,⽤Error类表⽰。
Error类描述的是内部系统错误,例如Java虚拟机崩溃。
这种情况仅凭程序⾃⾝是⽆法处理的,在程序中也不会对Error异常进⾏捕捉和抛出。
异常(Exception)⼜分为RuntimeException(运⾏时异常)和CheckedException(检查异常),两者区别如下:RuntimeException:程序运⾏过程中出现错误,才会被检查的异常。
例如:类型错误转换,数组下标访问越界,空指针异常、找不到指定类等等。
CheckedException:来⾃于Exception且⾮运⾏时异常都是检查异常,编译器会强制检查并通过try-catch块来对其捕获,或者在⽅法头声明该异常,交给调⽤者处理。
两种异常的处理⽅式:若是运⾏时异常,则表明程序出错,应该找到错误并修改,⽽不是对其捕获。
若是检查异常,遵循该原则:谁知情谁处理,谁负责谁处理,谁导致谁处理。
处理就是对其捕获并处理。
深⼊了解异常处理异常处理的5个关键字:try、catch、throw、throws和finally。
关于它们的⽤法和注意点,会在下⾯⼀⼀介绍。
Java的异常处理模型基于三种操作:声明异常、抛出⼀个异常和捕获⼀个异常。
声明异常(throws) //不捕获,⽽是声明该异常,交给调⽤者处理public static void method() { public static void method2() throws Exception {/*try-catch块捕获异常*/ if(5 > 3) {if(5 > 3) { throw new Exception(); //抛出异常try { }throw new Exception(); //抛出异常 }} catch (Exception e) {e.printStackTrace();//捕获异常后的处理}}}在Java中,当前执⾏的语句必属于某个⽅法,Java解释器调⽤main⽅法执⾏开始执⾏程序。
java异常处理

Try与 Try与catch
try
捕获违例的第一步是用try{… 捕获违例的第一步是用 try{…} 语句块选定捕 获违例的范围。 获违例的范围。 catch 在catch语句块中是对违例对象进行处理 catch语句块中是对违例对象进行处理 的代码
每个try 语句块可以伴随一个或多个catch 语句, 每个 try语句块可以伴随一个或多个 catch语句 , 用 于处理可能产生的不同类型的违例对象。 于处理可能产生的不同类型的违例对象 。 与其它 对象一样, 对象一样 , 可以访问一个违例对象的成员变量或 调用它的方法。 调用它的方法。 getMessage( ) 方法,用来得到有关异常事件的信 方法, 息 printStackTrace( )用来跟踪异常事件发生时执行 堆栈的内容。 堆栈的内容。
IOExeption
从一个不存在的文件中读取数据 越过文件结尾继续读取 连接一个不存在的URL 连接一个不存在的URL
5
Java当中的异常处理机制 Java当中的异常处理机制
异常是一个对象,必须是某个异常类的实 例,这个异常必须是已经定义好的。 例,这个异常必须是已经定义好的。 Java类库中已经存在了许多异常类,每种异 Java类库中已经存在了许多异常类,每种异 常类对应着某一种或者某一类错误,类中 包含着错误的相关信息和处理方法。 如果程序发生错误的当前结构中没有处理 如果程序发生错误的当前结构中没有处理 此异常的机制,那么它将移交给外层结构 处理,如果还不行,就继续上交,直到操 处理,如果还不行,就继续上交,直到操 作系统,操作系统就会终止程序的运行。
17
异常使用中的两个问题(1) 异常使用中的两个问题(
异常的匹配:异常的控制过程与swich相似, 异常的匹配:异常的控制过程与swich相似, 但有本质区别
java的异常处理机制模式

java的异常处理机制模式摘要:1.Java 异常处理的概念2.Java 异常处理的基本语法3.Java 异常处理的模式4.Java 异常处理的优点5.Java 异常处理的使用示例正文:1.Java 异常处理的概念Java 异常处理是指在Java 程序运行过程中,对可能出现的错误或异常情况进行预判和处理的一种机制。
异常处理能够提高程序的健壮性,使程序在遇到错误时能够正常关闭,避免因为未处理的异常导致的程序崩溃。
2.Java 异常处理的基本语法Java 异常处理主要涉及到以下几个关键字:- try:用于包裹可能出现异常的代码块。
- catch:用于捕获和处理异常的代码块。
- finally:用于定义无论是否发生异常都会执行的代码块。
- throw:用于主动抛出异常。
- throws:用于声明方法可能抛出的异常类型。
3.Java 异常处理的模式Java 异常处理的模式主要有以下几种:- 抛出异常:通过throws 关键字声明方法可能抛出的异常类型,当方法执行过程中出现异常时,会主动抛出异常。
- 捕获异常:通过try-catch-finally 语句捕获和处理异常。
- 声明异常:通过throws 关键字声明方法可能抛出的异常类型,但不进行异常处理。
- 忽略异常:通过try-catch 语句捕获异常,但不进行任何处理。
4.Java 异常处理的优点Java 异常处理具有以下优点:- 能够提高程序的健壮性,避免因为未处理的异常导致的程序崩溃。
- 能够提高代码的可读性和可维护性,将异常处理代码和正常逻辑代码分离。
- 能够方便地实现代码的调试和测试。
5.Java 异常处理的使用示例以下是一个Java 异常处理的使用示例:```javapublic class ExceptionDemo {public static void main(String[] args) {try {divide(10, 0);} catch (ArithmeticException e) {System.out.println("除数不能为0");}}public static void divide(int a, int b) throws ArithmeticException {if (b == 0) {throw new ArithmeticException("除数不能为0");}System.out.println("计算结果:" + a / b);}}```在这个示例中,我们通过try-catch 语句捕获和处理了divide 方法可能抛出的ArithmeticException 异常。
java numberformatexception异常处理机制实例
java numberformatexception异常处理机制实例Java中的NumberFormatException异常处理机制实例NumberFormatException是Java语言中的一个常见异常,用于指示在字符串转换为数字的过程中出现了错误。
在许多编程任务中,我们会遇到需要将用户输入的字符串转换为数字的情况,但是如果用户输入的字符串无法转换为有效数字,就会抛出NumberFormatException异常。
本文将介绍NumberFormatException异常的原因、处理机制及相关实例。
一、NumberFormatException异常的原因NumberFormatException异常的产生是由于字符串无法或不符合要求地转换为数字导致的。
例如,当我们尝试将包含字母、特殊字符或指数记数法的字符串转换为数字时,就会抛出NumberFormatException异常。
下面是一些示例:javaString str1 = "abc";int num1 = Integer.parseInt(str1); 抛出NumberFormatException异常String str2 = "10.5";int num2 = Integer.parseInt(str2); 抛出NumberFormatException异常String str3 = "1e5";int num3 = Integer.parseInt(str3); 抛出NumberFormatException异常上述示例中,str1包含字母字符,str2包含小数点,str3包含指数记数法,这些字符串都无法转换为整数,因此会抛出NumberFormatException 异常。
二、NumberFormatException异常的处理机制为了避免NumberFormatException异常的发生,我们可以使用异常处理机制来捕获并处理它。
Java中的异常处理机制
Java中的异常处理机制Java是一种面向对象的编程语言,异常处理是Java编程中非常重要的一个方面。
在Java程序中,异常是指程序执行时的错误或异常状况。
如果不处理异常,则程序将终止执行并抛出一个异常。
Java语言提供了一种异常处理机制,使程序员能够有效地处理异常情况,提高程序的健壮性和可靠性。
异常处理机制可以帮助我们更好地管理程序的运行过程,提高代码的可读性和重用性。
Java异常处理机制的本质是一个异常对象的抛掷和接收机制,它由以下三个部分组成:异常的产生、异常的抛掷和异常的接收与处理。
一、异常的产生异常通常由以下几种情况产生:1. 编程人员故意或错误地抛出一个异常,如:throw new Exception("自定义异常")。
2. 运行时出现错误,如:数组越界、空指针等。
3. 系统出现异常,如:文件无法打开、网络连接中断等。
二、异常的抛掷当程序中出现异常时,有两种方式来抛出异常:1. 使用throw语句抛出异常,如:throw new Exception("自定义异常")。
2. 让系统自动抛出异常,如:空指针引用异常、除零异常等。
抛出异常后,程序会停止执行,并将异常对象抛出到调用该方法的地方。
如果该方法没有捕获异常,则该方法终止执行并将异常传递给调用该方法的下一个方法,直到异常被捕获或到达程序的顶层。
三、异常的接收与处理接收并处理异常是Java中异常处理机制的最后一步。
如果异常被捕获,程序将通过捕获异常的处理程序继续执行,而不会终止程序的执行。
Java中提供了try-catch语句块来捕获异常。
try-catch语句块的语法结构如下:try{代码块 //有可能抛出异常的代码}catch(异常类型1 异常变量名){代码块 //异常类型1的处理逻辑}catch(异常类型2 异常变量名){代码块 //异常类型2的处理逻辑}当try语句块中的代码抛出一个异常时,会跳转到匹配该异常类型的catch语句块。
java异常处理机制详解
java异常处理机制详解转⾃:/hy928302776/archive/2013/04/22/3035504.html异常机制已经成为判断⼀门编程语⾔是否成熟的标准,异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提⾼程序健壮性。
Java异常机制主要依赖于try、catch、finally、throw、throws五个关键字。
1.try:它⾥⾯放置可能引发异常的代码2.catch:后⾯对应异常类型和⼀个代码块,⽤于表明该catch块⽤于处理这种类型的代码块,可以有多个catch块。
3.finally:主要⽤于回收在try块⾥打开的物⼒资源(如数据库连接、⽹络连接和磁盘⽂件),异常机制总是保证finally块总是被执⾏。
只有finally 块,执⾏完成之后,才会回来执⾏try或者catch块中的return或者throw语句,如果finally中使⽤了return或者 throw等终⽌⽅法的语句,则就不会跳回执⾏,直接停⽌。
4.throw:⽤于抛出⼀个实际的异常,可以单独作为语句使⽤,抛出⼀个具体的异常对象。
5.throws:⽤在⽅法签名中,⽤于声明该⽅法可能抛出的异常。
Java的异常分为两种,checked异常(编译时异常)和Runtime异常(运⾏时异常)1. java认为checked异常都是可以再编译阶段被处理的异常,所以它强制程序处理所有的checked异常,⽽Runtime异常⽆须处理,java程序必须显式处理checked异常,如果程序没有处理,则在编译时会发⽣错误,⽆法通过编译。
2. checked异常体现了java设计哲学:没有完善处理的代码根本不会被执⾏,体现了java的严谨性,对于构造⼤型、健壮、可维护的应⽤系统⽽⾔,错误处理是整个应⽤需要考虑的重要⽅⾯。
Java异常处理机制,在程序运⾏出现意外时,系统会⽣成⼀个Exception对象,来通知程序,从⽽实现将“业务功能实现代码”和“错误处理代码”分离,提供更好的可读性。
JAVA-异常处理
JAVA-异常处理1.异常概述1. 异常是运⾏时错误(程序执⾏期间发⽣的事件).2. 异常是从⽅法抛出的,⽅法的调⽤者可以捕获以及处理该异常.3. 异常处理使得程序可以处理运⾏时的错误并且继续通常的执⾏.4. 运⾏时错误: 程序运⾏过程中,若JVM检测出⼀个不可能执⾏的操作.eg.越界下标访问: ArrayIndexOutOfBoundsException5. 异常: JAVA中运⾏时错误会作为异常抛出. 异常为⼀种对象.⼤致模板:try{Code to run;A statement or a method that may throw an exception;More code to run;}catch(type ex){Code to process the exception;}1. 很多库⽅法都会抛出异常,此时throw可省2. ⼀个异常可能是通过try块中的throw语句直接抛出,或者调⽤⼀个可能会抛出异常的⽅法⽽抛出3. 若try块中内容正常执⾏,不会引起异常4. 若try块中内容(⽅法)遇到⼀个异常,其会抛出⼀个异常给它的调⽤者,这个调⽤者的catch处理该异常拋出(throw)异常:⽣成异常对象,并把它提交给运⾏时系统。
捕获(catch)异常:运⾏时系统在⽅法的调⽤栈中查找,直到找到能够处理该类型异常的对象。
2.异常类型Java通过⾯向对象来处理异常,即异常是对象,⽽对象都⽤类来定义。
异常的根类为ng.Throwable异常类的类型:1. 系统错误Error: Java虚拟机抛出,描述内部系统错误.发⽣时:通知⽤户以及尽量稳妥地终⽌程序.2. 异常Exception:描述由程序和外部环境引起的错误.发⽣时:能被程序捕获和处理1. 运⾏时异常(unchecked): RuntimeException类表⽰,程序设计错误。
如 NullPointerException、IndexOutOfBoundsException 等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在一个完美的世界中 ,用户输入数据 的格式永 远都
是正确的 ,选择打开的文件也一定是存在 的,并且代码 永远是 不会 出现b g 。然而 ,在现实世界 中却充 满了 u的 各种不 良的数据和有问题 的代码 ,Jv 程序设计语 言使 aa
就用非运行时异 常吧。
二 、异 常 的捕获 和处 理
E c pin x e t 的层 次结构 。E c pin L 为运行 时异 常 o x et 3分 o
( u t E cpin和非运行时异常 。由程序错误 导致 R ni x et ) me o
的异 常属 于R ni E cpin ut me x e t ;曾经能够正确运行 ,而 o 由于某 些情况 ( 例如 ,I 错 误 )导致 的异常属 于非运 / O
行时异常 。请切 记 “ 如果出现R ni E cpin ut me xe t 异常 , o
就一定是你的问题 ” ,马上修改你 的程序 。如果客户端
费的时 间很 大 。因此 ,请 只在异常情 况下使 用异常机
制。
可以根据异常采取一些替代行为来恢复系统运行 ,那 么
9 8
信 息 系统工程 l2 1.1 0 0 11. 2
T o wa l类有 两个 子 类E r r x e t n h r be ro 和E c p i ,分 o
对一个空栈进行退栈操 作 。代码A 使用i 句查看栈 是 鼯
否为空;代码B 使用异常捕获方式 。 代码A:i !e t() . p ) f s mp )s o (; (. y p
别 表 示 错 误 和 异 常 。 进 行 程 序 设 计 时 ,需 要 关 注
j ac t c Ex e i ne { c pt o
i
类 。在程 序 中 ,如果Jv 的内置 的异 常类不 能满足需 aa
:
-
撼 捩 井娃 什常
p itt c T a杖 J r Sa k r c n
求 ,用户可以创建 自己的异常类 。 1 . 异常使用的建议
句块 中 ,这种编程方式将 导致代码量急剧膨胀 。如果程
p b i S r g £re H t n n 0 a na t nn o ain u l ti ne c p Aci I v c “0 c i iv c t ) c n n o o
ty r
序 中有多个操作 ,当任何一个操作 出现问题 时 ,整个任
;
,
异常处理 能分离错误代码和正常代码 ,使代码更 简 洁 ;能保护数据 的正确性 和完整性 ,使程序更严谨 ;能 使程序便于调试和排错 ,更好维护 。但使用时一般要遵
循 以下建议 。
图 1 J v 异常体 系结 构 aa
● 异常处理 不能代 替简单的程序逻辑
下面2 段代码应用 了内置Sak ,试着上百万次地 tc类
<< ≮ TCN L G 技 应 EH OO Y 术 用
Jv a异常处理机制及其在项 目中的应用 a
◆ 胡胜丰
摘要 :本 文 J a a 的异常机制入手 ,探讨如何在项 目中灵 活、 v 有效地运用异常处理机 制,使我们 的程序更加健壮。 关键词 :异常处理 ; aa Jv
当然 ,如行 处
理。
参考文献
[] rman aa2核 心技 术 卷 I 】 1Hos n Jv t [ . M 叶乃 文译 . 京 : 械 工 业 出 北 机
版 社 .0 6 20 .
● 抛 出异常比放任更好
给一 个方 法传递 了无效 的参 数时 ,是返 回一个 虚 拟的数值 ,还是抛 出一个异常 ,哪种方式更好?笔者认 为 ,抛出一个 自定义异常要 比在让程序抛 出一个 空指针
Jv 异 常处理涉及 到五个 关键字 ,分别是 :t 、 aa r y ct 、f ay ho a h i l 、trw、trws c nl ho 。下面将通过实例进行介 绍 ,掌握基本 的异常处理知识 。
ty r{ 黼控 莒 的代 码 块 持I 】ac( xet rej e t E cp o J h i l 哺 . y 求} 挑 f 代蚂 块 t 结 诲挺 r i : j
烀 必颁 , 般 吲 戈 吣 ,数捌 . I J 叫 生接等
}
用一种称为 “ 异常处 理”( cpinh n l g 的错误捕 e e t adi ) x o n
获机制来处理。
一
、
J v 异 常分 类 aa
悖常 处F 睁 i 。
}nl i y f al
在程序 中引发错误 的代码通常离那些能够让数 据恢 复到安全状态 ,或者能够保存用户的操作结果 ,并正常 地退 出程序的代码很远。异常处理的任务就是要将控制
权从产生错误 的地方传给能够处理这种情况 的错误处理 器 。在 Jv 程 序语 言 中 ,异 常对象 都派生于T rwa l aa ho be
casT r xT s{ ls h o ̄ e t
: u i ca s r w e o; p n c ls o D m Th
:; I … ”常 /l I 抛 i
I E cpin O x et 。设计 中at n 、sri 类 和d o 如果要 o co ̄ i evc e a类
捕 获异 常 ,都用t . ac ,cth r 一 th a 块内不记 录 日志 ,通常 yc c
是抛出一个新异 常 ,并且注明错误信息 ( 见下面左边程
信息系统工程 I 0 1. 1. 2 2 1 0 1
下建议将异 常向上传递 ,让高层次 的方法告知用户发生 的错误 ,或者不成功的命令更加适宜 。
2W e 项 目中的异常设计分析 . b 在笔者参与 的sr g s us+ ie t 目中,充分 pi +t t hbmae n r 2 项
运用前文所述的使用要点 ,供大家探讨 。
图2W e 项 目异常 处理 图 b
漆 肛 数{ 列 强 E : e j } 《 锚 冀! t
}
r tll s ce  ̄” e lla uc s, .
不要 只抛 / u t E cpin  ̄R ni x e t 异常 ,应该 寻找更 me o
}
l l ie rtnef u t l xet l{ e ef is c oR ni e cp o ) s l  ̄a nE i1 jl { s ee
d u l 1 n t )hrws c p i nf o b ed州lt i t o e to an b Ex
;
。
p b c t i vi ma1 tn [ag u l ac od i: r g】 r i s t 1S i 1 s
T r wT s t O W Th wT s( h o e tt=i e w et
蛳 技
【
错 {破 ct ac h扼
ut a t  ̄[A c t .n i c il P' ai 1 t& o oP
序代码会更 清晰 ,同时也达到 了将正确处理与错误处理
分开的异 常处理 目标。
● 充 分利 用异 常 层 次 结构
it i! , s e a eo : e c v (h 九 s } thE cp o 】 ct ( xe t e{ c
异常更好 。
● 合 理传 递 异 常
[ 张靓 , 慧敏 , J v 2 ] 顾 等. a案例 开发 [ . : a M] 北京 中国水利 水电 出版
社 .0 5 20.
( 作者单位 :湖南科技职业学院 )
我们是否应 该捕获抛 出的所有异 常呢?现在的项 目
一
般都采 用分层结构 ,每层都可能抛 出异常 ,一般情 况
抛 出 坤常
ib )h o  ̄ wE cpin : f  ̄ rw l x。 t 0 ( t f t o
rt r u l :u 2 eu nn t 1 m . a ' n
tl r y 技 腿 5常 毒 S s m o t r t ( v1 , 1 yt u pi l t i(0 ) e nnt d O
务就会被取 消 ,则可 以将它们放在 同一个仃 中 ,这样程 y
p ni tigs v ( u cS r a e n
t { r y
醚蹦 ∞r ie ( 1 e vc } t = v l¥
返 垃 馘 的 A t n co, i
r t nr s l et u t  ̄ e ;
{
一
加 适 当 的子 类 或 者创 建 自己的 异 常类 。不 要 只捕 获
T rw be ho a l异常 ,否则 ,会 使程序代码更 加难 读 、更难
维护 。 ● 不要压制异常
发 堪 错 误消 确
球
edo ac n fc th
如果编写 了一个调用方法 的方法 ,而这个方法可能 10 0 年才抛 出一个异 常 ,那么 ,应该将这个 异常关闭 。
T C NO O Y 技 术 应 用 E H L G
》> ≥
● 不要过分地 细化异常
序 );然后在异 常拦截器对异常进行处理 ;最后在e o rr r j 页面 中显示具体的错误消息 ( s p 见下面右边程序 )。
; t n联执 数 沸枷撵 磐  ̄i co
'
有些程序员习惯把每条语句都放在一个单独的t  ̄ r A ,
项 目中使用到 了J K内置异常 、 自定义异 常和s us D tt r
的异常拦 截器 。在上 图所示 的结构 中 ,三层 都有 可能
发生异 常 , ̄ l a 层可 能会有 S L x e t n evc l o d Q E cpi ,sri o e 层 可能 会 有Nu 1on E c p in cin 可能 会 有 1 it x e to ,a t 层 P o
9 9
t r  ̄ n w Rma me x e i ( h m' c t E c pt i on ’