- 浏览: 762509 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (241)
- 个人思考 (1)
- 数据库 (5)
- java基础 (32)
- 软件工程 (2)
- zk开源框架 (15)
- 设计模式 (25)
- javascript (12)
- css (9)
- UML (2)
- CMMI软件需求 (3)
- CMMI软件设计 (2)
- CMMI软件实现 (1)
- CMMI软件测试 (1)
- 正则表达式 (4)
- 系统日志配置 (4)
- 应用服务器 (1)
- spring (7)
- XML (6)
- java web (10)
- Ajax (3)
- RichFaces (14)
- 问题 (1)
- 评论文章 (2)
- fushioncharts (2)
- MAVN (4)
- jquery (26)
- Ext js学习 (2)
- 学习心得 (2)
- CSS兼容问题 (3)
- XSL-FOP (1)
- Quartz (0)
- OSGI (1)
- spring--security (6)
- apache tools (1)
- eclispe 小技巧 (2)
- Ant (1)
- 杂记 (1)
- spring3系列 (5)
- java cache (4)
- EffectiveJava (2)
- 代码重构 (0)
最新评论
-
psz6696:
可以说是超级简单的Demo了,可惜没有演示设值注入和构造注入两 ...
模拟spring中的ClassPathXmlApplicationContext类的实现 -
ziyourJava:
[flash=200,200][img][url][list] ...
spring security进级篇 V 自定义标签控制显示 -
ztw1122:
...
zk组件开发指南(目录) -
zjysuv:
容我说一句 在座的各位都是垃圾 spring 3.2以后的@C ...
三. spring mvc 异常统一处理 -
chengwu1201:
二 基于Spring的异常体系处理
一、Java中异常处理的原则
*************************************************************************************
当一个类在遇到错误时,它应该设法:
A.返回到一个安全和已知的状态
B.能够使用户执行其它的命令
C.如果可能,就保存所有的工作
D.如果有必要,可以退出以避免造成进一步的危害
*************************************************************************************
二、隐含和显式错误的区别
*************************************************************************************
一个隐含的错误或异常是起源于错误或RuntimeException类。其它类型的异常则被称作是显式异常。隐含异常可以出现在任何类和方法中,在运行时异常的情况下,我们可以有策略地放置if语句来防止它的产生,但在Error的情况下我们将束手无策。
显式异常仅仅出现在方法体中,他们在方法体头部已经明确了该方法所可能遇到的异常类型
隐含异常在它们产生时被自动抛出,而显式异常必须在那些被明确声明的方法中才可能被抛出
*************************************************************************************
三、何时使用if-else来预防异常,何时使用try-catch来捕捉异常
*************************************************************************************
如果我们明确知道可能发生错误的地方或能够有效预防错误发生,就应该使用if-else来预防错误的发生:比如空指针异常,数组下标越界异常
如果我们无法明确知道错误发生的地方或无法完全避免异常,应该使用try-catch来捕捉异常:比如I/O异常。
*************************************************************************************
四、如何抛出一个显式异常:
*************************************************************************************
要抛出一个显式异常,必须用以下语法明确地在方法头部声明该方法将会遇到的异常种类:
[modifiers] returnType methodName throws ListOfExceptionType
{ …
throw new ExceptionType1(argument); // 抛出第一种类型的异常
…
throw new ExceptionTypeN(argument); // 抛出第N种类型的异常
}
异常一旦抛出,将在调用该方法的上层方法体内寻找合适的异常处理代码,而不会继续执行该方法的正常处理流程。
五、如何自定义一个异常
*************************************************************************************
A.创建一个继承Exception的类或者其它已经存在的异常类的子类
B.在该类中创建一个默认的无参构造方法,这个构造方法以适当的错误信息作为输入,来调用它的超类的构造方法
C.再增加一个带字符串参数的构造方法,这个构造方法以合适的错误消息作为输入(还包括输入的字符串)来调用它的超类的构造方法
例如:
public String getText(String s) throws LongStringException{
if(s.length()<=10){
return s;
}
else {
throw new LongStringException(“String too long”);
}
}
*************************************************************************************
六、是不是所有的方法都可以抛出一个异常
*************************************************************************************
不是,如果子类方法覆盖了父类的方法,且父类方法本身不会抛出异常的话,子类的方法即使在方法的头部声明了异常的抛出也不能够抛出异常
碰到这种情况,可以采用在一个与父类方法不同名的方法中,调用父类的方法,然后明确地声明该方法可能会抛出的异常就行了。
*************************************************************************************
七、什么时候才是抛出异常的时机
*************************************************************************************
A.如果一个简单的测试就可以防止异常的产生,那么就竭力防止它(特别适用RunntimeException)
B.如果知道如何正确的处理这种异常,那么就着手解决它,而不要抛出一个异常,因为对于一个
需要返回值的方法来说,抛出一个异常会导致该方法的执行中断,转到异常处理方法中,从而
不能正常的返回一个值
D.如果不能确信怎样去处理这个异常,那就抛出它,把它留给一个合适的方法去处理。同样在调
用一个方法时,这个方法抛出一个异常,那么也可以不去处理它,而把它重抛(re-throw)给别的方法去处理
*************************************************************************************
八、如何捕捉异常
*************************************************************************************
如果在try块里的任何一段代码产生了一个catch块要捕捉的异常,那么在try块中其余剩下的代码都将被忽略,而相应的catch块将会被执行
如果在try块里没有代码产生异常,那么所有的catch语句块都将会被忽略
如果抛出的异常在catch块里面没有被声明,那么方法立刻退出
*************************************************************************************
九、为什么在捕捉异常时要把Exception放在catach块的最后
*************************************************************************************
因为当异常产生时,JVM会按照顺序查找与异常匹配的catch块,如果把catch(Exception e)放在所有catch块的最前面,由于大多数RuntimeException类都继承了Exception类,所有的异常都会被catch(Exception e)所捕捉。这意味着其它的catch块都不会被执行。所以catch块的排列顺序应该是按照先子类、后父类的方式排列,最后才是catch(Exception e)
*************************************************************************************
十、异常的抛出和捕捉的时机
*************************************************************************************
A. 如果能够找到一个有意义的方法来捕获异常,就立即引入这个方法
B. 否则就应该考虑做某些处理后传递或者再次抛出异常,也可以把异常转换为另一种形式,然后抛出一个新的异常
C. 另一个方法是,可以完全忽略这个异常,而把它加到方法的头部的throws语句中,由调用这个方法的方法来处理它
D. 通过捕获一个公共的异常超类,可以在一个块里面捕获多个异常,但不能够用一个空的catch语句块来完全制止一个异常。
发表评论
-
Java transient关键字
2013-07-01 14:11 1279Java的serialization提供了一种持久化对象实例 ... -
java中的equals()和hashCode()详解
2013-06-23 17:21 1269java中对equals()和hashCode ... -
Java中synchronized 关键字的详解
2013-06-25 12:18 1747在了解cache的过程中,难免会涉及多线程的问题,涉及 ... -
PDF 报表合并
2012-08-14 15:34 1216import java.io.FileOutputStream ... -
java中 set,list,array(集合与数组)相互转换
2011-02-25 17:22 1884public static Object[] List2Arr ... -
互斥访问,限制最大数访问
2010-10-26 18:01 1421/** * @author jgao1 * 用法:P ... -
java中文件操作(递归删除空文件夹,删除过期文件)
2010-09-19 00:23 6413对文件的操作,大家都可能会写一些操作,其实Apache中Fil ... -
java IO类操作
2009-10-24 20:02 1721java的IO类操作主要包括如下几类 1、File类的使用 ... -
java中集合排序问题
2009-10-16 09:59 1710关键字: 集合排序 集合 排序 Iterator ... -
java中已知字体和字体大小确定字体的高度和长度
2009-09-21 17:27 4577public static void main(String ... -
java中路径处理分割
2009-09-12 16:30 5732在Java中处理一些路径相关的问题的时候,如要取出ie浏览器上 ... -
文件中的流
2009-09-07 21:08 14771、base64inputStram public clas ... -
一个javaBean的操作类,主要用于复制bean
2009-08-20 17:53 2762今天用到Bean的复制..恰好有空,写了这个Bean操作类.. ... -
classUtils
2009-08-09 22:55 2051import java.io.File; import ja ... -
java多线程
2009-07-09 21:43 2231java多线程是java基础中的重点,下面就j ... -
java的类集详解
2009-07-05 20:20 2133在学习类集之前,先明确一个概念,那就是啥叫重量级, ... -
java的反射机制
2009-07-04 11:44 1495Java反射机制是利用元类(相似于元数据的概念,元 ... -
抽象类和接口
2009-06-28 15:57 1813今天复习下抽象类和接口。做点重要的笔记 1、抽象 ... -
java中的clone机制及序列化
2009-06-25 22:50 1568在实际编程过程中,我们常常要遇到这种情况:有一个对象A ... -
java字符串的各种编码转换
2009-06-25 21:22 1333import java.io.UnsupportedEncod ...
相关推荐
什么时间使用runtimeException,什么时间使用Exception,大家有没有被困扰到?经整理,JAVA异常处理框架,以及如何构造自己的异常体系,讲得比较详细,值得一看。
Java异常处理是编程中至关重要的部分,它帮助程序员在程序执行过程中捕获并处理错误情况。在Java中,异常是通过类的实例来表示的,这些类都继承自`java.lang.Throwable`类,它是所有异常和错误的根类。异常分为两种...
Java 异常处理机制详解 Java 异常处理是 Java 语言中的一种机制,用于处理程序中的异常情况。Java 提供了抛出异常、捕捉异常和 finally 语句的使用来处理程序异常。下面是关于 Java 异常处理的几条建议: 建议 1: ...
JAVA异常思维导图,便捷整理思路,异常、异常处理:捕获异常、抛出异常、自定义异常、方法覆盖中的异常处理、在处理异常时,是选择捕获处理还是抛出处理?
Java异常处理是编程中至关重要的一个方面,它用于处理程序执行期间可能出现的错误或异常状况。在Java中,异常是一个对象,它表示程序运行时的不正常状态或错误。异常对象是`Throwable`类或其子类的实例,Java通过...
在"Java常用代码整理"这个主题中,我们可以探讨多个Java编程中的关键知识点,包括基础语法、面向对象特性、异常处理、集合框架、IO流、多线程、网络编程以及实用工具类等。 1. **基础语法**:Java的基础语法包括...
Java异常处理是编程中至关重要的一个方面,它帮助开发者在程序遇到错误时进行优雅的恢复或终止。Java异常是程序运行时出现的不正常情况,可能是由于逻辑错误、资源问题或其他不可预见的因素导致的。Java提供了强大的...
总结Java异常机制是程序错误处理的重要部分,它提供了结构化的错误处理方式,帮助开发者识别和解决程序中可能出现的问题。理解异常的分类、处理机制以及最佳实践,能够编写出更加健壮和易于维护的代码。
此外,Java还强调了异常处理,通过try-catch-finally语句块来捕获和处理程序运行时可能出现的问题。异常处理有助于增强程序的稳定性,使错误处理更加有序。 在高级特性方面,Java 5引入了泛型,增强了类型安全,...
3. **异常处理**:Java中的异常处理是一个重要的特性,用于处理程序运行时可能出现的错误。你需要知道try-catch-finally语句块的用法,以及如何自定义异常。 4. **集合框架**:Java集合框架提供了多种数据结构,如...
Java异常处理机制允许开发者优雅地处理程序运行时发生的错误情况,而不会导致整个程序崩溃。本文将深入探讨Java自定义异常及其在实际代码中的应用。 首先,Java异常是通过`Exception`类或其子类来表示的。当程序中...
课程中可能会涵盖Java的基础语法,包括数据类型、流程控制、类与对象、异常处理等。此外,对于Java Web开发,Servlet和JSP是必不可少的部分,它们用于构建动态网页,处理HTTP请求和响应。 在Web开发实践中,Java...
- **try-catch-finally**:理解异常处理的结构,以及finally块的执行特性。 - **自定义异常**:知道如何创建和抛出自定义异常。 4. **集合框架** - **List、Set、Queue**:掌握ArrayList、LinkedList、HashSet、...
7. **异常处理**:Java异常处理机制包括try-catch-finally语句块,throw和throws关键字,自定义异常等,用于捕获和处理程序运行时可能出现的问题。 8. **JVM内存管理**:了解JVM的工作原理,包括堆内存、栈内存、...
2. **Java异常处理**: - **异常分类**:Java中的异常分为检查异常(Checked Exception)和运行时异常(Unchecked Exception)。 - **异常的抛出与捕获**:理解try-catch-finally语句块,知道如何使用throw关键字...
1. **JAVA SE**(Java标准版)是Java的核心部分,包括基础语法、面向对象特性、异常处理、集合框架、I/O流、多线程等内容。 - **深入JAVA API**:了解并熟练使用Java API是Java程序员的基本功。 - **Lang包**:...
6. **异常处理** - 网络操作可能会出现各种异常,如连接超时、无网络、找不到资源等,因此必须妥善处理这些异常,确保程序的健壮性。 7. **文件操作** - `java.io.File` 类用于文件和目录的操作,如创建、删除、...
5. **异常处理**:Java提供了异常处理机制,通过try-catch-finally语句块来捕获和处理运行时错误。 6. **字符串处理**:String类在Java中是不可变的,了解其常用方法如concat、substring、indexOf、replace等对编程...
3. **异常处理**:Java的异常处理机制通过try-catch-finally语句块来捕获和处理运行时错误,确保程序的健壮性。理解Checked和Unchecked异常的区别也是很重要的。 4. **集合框架**:Java集合框架是存储和管理对象的...
**描述:“搜集整理关于java错误处理:java.lang.OutOfMemoryError: Java heap space”** - 描述提到了对这个问题的相关资料进行整理,这意味着该文档将提供如何识别、分析并解决此类问题的方法。 #### 详细解析 ...