`
qqbwww
  • 浏览: 59333 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java 异常处理最佳实践

阅读更多

 


1.API设计最佳实践:
当在检查异常和非检查异常中摇摆时,自问一下:客户端代码在异常发生时能做什么?
如果客户端代码什么都做不了:那么生成一个无需捕获的异常。
如果客户端代码能从异常中获取有效信息恢复程序状态,则使用检查异常。
减少自定义异常可以减少异常轨迹跟踪,作者不推荐自定义异常。

2.保护封装
不要让特定异常上传的高层。
比如SQL异常就不要传播到BO层。处理方法有二:
1.转换SQLException到另一种检查异常,如果客户端代码希望从异常中恢复的话。
2.不希望恢复的话就使用非检查异常。
处理方式
public void dataAccessCode(){
    try{
        ..some code that throws SQLException
    }catch(SQLException ex){
        throw new RuntimeException(ex);
    }
}
要优于
public void dataAccessCode(){
    try{
        ..some code that throws SQLException
    }catch(SQLException ex){
        ex.printStacktrace();
    }
}

3.不要尝试创建新的自定义异常如果它们对客户端代码而言不包含有用信息的话。
对于没有添加有用方法或属性的异常,还是使用标准异常而不是自定义异常比较好。


4。为异常写文档说明:
可以使用Javadoc's @throws标签为异常写文档说明。为了放置文档和实现不统一,可以为异常抛出写单元测试
public void testIndexOutOfBoundsException() {
    ArrayList blankList = new ArrayList();
    try {
        blankList.get(10);
        fail("Should raise an IndexOutOfBoundsException");
    } catch (IndexOutOfBoundsException success) {}
}



使用异常的最佳实践:
1.总是清理你使用过的资源。
public void dataAccessCode(){
    Connection conn = null;
    try{
        conn = getConnection();
        ..some code that throws SQLException
    }catch(SQLException ex){
        ex.printStacktrace();
    } finally{
        DBUtil.closeConnection(conn);
    }
}

class DBUtil{
    public static void closeConnection
        (Connection conn){
        try{
            conn.close();
        } catch(SQLException ex){
            logger.error("Cannot close connection");
            throw new RuntimeException(ex);
        }
    }
}

2.不要为流程控制使用异常
3.不要挂起或者忽略异常
4.不要捕获顶级异常
在捕获Excepiton时,因为RuntimeException是Exception的子类,它就可能被忽略。
5.只记录一次异常
分享到:
评论

相关推荐

    Java 异常处理的 9 个最佳实践

    Java 异常处理的 9 个最佳实践,在处理异常时可以参考。

    Java异常处理的最佳实践

    Java异常,大家都很熟悉。那么具体操作是怎么样的呢?下面从基础开始,带大家一块了解是怎么实践的。本文是关于Exception处理的一篇不错的文章,从Java Exception的概念介绍起,依次讲解了Exception的类型(Checked/...

    详解Java异常处理最佳实践及陷阱防范

    主要介绍了Java异常处理最佳实践及陷阱防范,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java异常处理和最佳实践(含案例分析).pdf

    Java异常处理和最佳实践(含案例分析)

    Java 异常处理面试集锦及答案20道

    异常处理是Java编程中重要的概念和技巧之一,也是面试中常见的考点。...通过阅读本文,您将能够深入了解Java异常处理的原理、使用方法以及异常处理的最佳实践。不论您是准备面试还是希望加强对Java异常处理的知识掌握

    Java异常处理.md

    Java异常处理是编写健壮程序的关键方面之一。本资料将帮助您了解异常类层次结构、异常处理、抛出异常、自定义异常和最佳实践。 在Java中,异常被分为受检异常和非受检异常。受检异常需要在编译时进行处理,而非受检...

    Java编程异常处理最佳实践【推荐】

    主要介绍了Java编程异常处理最佳实践【推荐】,具有一定参考价值,需要的朋友可以了解下。

    Java编程中10个最佳的异常处理技巧

    主要介绍了Java编程中10个最佳的异常处理技巧,在本文中,将讨论Java异常处理最佳实践,这些Java最佳实践遵循标准的JDK库,和几个处理错误和异常的开源代码,这还是一个提供给java程序员编写健壮代码的便利手册,需要的...

    EventBus最佳实践:Java手撕实现ESB底层事件委托处理机制的思路,配套演示代码

    2、根据事件传播模型,如果发生异常断言则停止事件传播。 3、能够对组件串行执行的先后顺序进行编排。 4、有共性的处理机制可以进行封装,执行过程中视其为透明。 5、通过隐藏一些实现细节,使每一个关注点看起来都...

    java8集合源码分析-noah-bestPractices:Java业务最佳实践与踩坑

    Noah-Java最佳实践与踩坑 查看详细文章,可以参考我的博客 代码篇 01 使用了并发工具类库,线程安全就高枕无忧了吗?: 02 代码加锁:不要让“锁”事成为烦心事: 03 线程池:业务代码最常用也最容易犯错的组件: 04...

    java-best-practices:编码,设计和架构Java应用程序的最佳实践

    异常处理的最佳实践是什么? 建议何时选择不检查的异常? 什么时候使用标记界面? 为什么ENUMS对于可读代码很重要? 为什么要最小化可变性? 什么是函数式编程? 为什么要选择Builder Pattern来构建复杂的对象? 为...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    第2章 Java内存区域与内存溢出异常 / 24 2.1 概述 / 24 2.2 运行时数据区域 / 25 2.2.1 程序计数器 / 25 2.2.2 Java虚拟机栈 / 26 2.2.3 本地方法栈 / 27 2.2.4 Java堆 / 27 2.2.5 方法区 / 28 2.2.6 运行...

    NodeJS错误处理最佳实践1

    背景本文假设:你已经熟悉了JavaScript、Java、 Python、 C++ 或者类似的语言中异常的概念,而且你知道抛出异常和捕获异常是什么意思。你熟悉怎

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    《深入Java虚拟机(原书第2版)》,原书名《Inside the Java Virtual Machine,Second Edition》,作者:【美】Bill Venners,翻译:曹晓钢、蒋靖,出版社:机械工业出版社,ISBN:7111128052,出版日期:2003 年 9 ...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8新特性终极指南 序列化和反序列化 继承、封装、多态的实现原理 容器 Java集合类总结 Java集合...

    数据结构算法Java实现。关于Java《数据结构算法》核心技术学习积累的例子,是初学者及核心技术巩固的最佳实践。.zip

    安全:Java提供了丰富的安全特性,如禁止指针运算、自动内存管理和异常处理机制,以减少程序错误和恶意攻击的可能性。 可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动...

    廖雪峰 Java 教程.doc

    廖雪峰 Java 教程 Java教程 Java快速入门 Java简介 安装JDK 第一个Java程序 ...Java代码助手 ...Java程序基础 ...最佳实践 单元测试 编写JUnit测试 使用Fixture 异常测试 条件测试 参数化测试

    Java工程师面试复习指南

    Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8新特性终极指南 序列化和反序列化 继承封装多态的实现原理 集合类 Java集合类总结 Java集合详解...

    java面试手册及各类java书籍

    性能优化篇:分析Java应用的性能瓶颈,提供优化策略和最佳实践,帮助读者提升应用的性能。 面试题解析篇:精选大量Java面试题,并给出详细的解析和答案,帮助读者更好地应对面试挑战。 特色亮点: 权威性与实用性:...

    java学习书籍及建议.docx

    它详细介绍了Java编程中的有效实践和最佳实践,如何避免常见的错误和陷阱。 《深入理解Java虚拟机》:这本书是Java虚拟机编程的经典教材,适合中级和高级开发者。它详细介绍了Java虚拟机的原理和内部实现,以及如何...

Global site tag (gtag.js) - Google Analytics