高效的java异常处理
1基本信息
摘要:本文倡导一种对异常条件本质的思考方式,并描述一些有助于设计的模式。最后,本文还将在AOP模型中,作为相互渗透的问题,来讨论异常的处理。当你能正确使用异常时,它们会有极大的好处。本文将帮助你做到这一点。
原作者:Barry Ruzek译者:易晓斓,原文:http://www.yeeyan.com/articles/view/2091/976
这样一个不可能赢的局面导致了我们今天所警告的绝大多数臭名卓著的异常处理的颠覆性格局。同时也衍生了很多正确或错误的补救之道。
客户端可以很容易的处理好这两种异常。如果对支票的兑付被停止了,客户端把该支票交付特别处理。如果是因为资金不足,用户端可以从用户的储蓄帐户里转移一些资金到支票帐户里,然后再试一次。
CheckingAccount这个例子说明了一个方法不能成功返回它想要的结果的两个基本原因。这里是两个描述性的术语:
应变
与实际预料相符,一个方法给出另外一种回应,而这种回应可以表达成该方法所要达到的目的之一。这个方法的调用者预料到这个情况的出现,并有相对的应付之道。
Java异常的匹配
在建立应用架构中Java异常的规则时,以应变和故障的方式仔细考虑好“什么可能会出错”是有长远意义的。
一个成功的故障处理架构一定要达到下面的目标:
•减少代码的复杂性
•捕获和保存诊断性信息
•对合适的人提醒注意
•优雅地退出行动
当你的架构包含了故障屏障,程序员都知晓了后,再写出一次性的故障异常的冲动就会锐减。结果就是应用中出现更干净,更易于维护的代码。
在Aspect Oriented Programming(AOP)的术语里,故障和应变的处理是互相渗透的问题。比如,要实施故障屏障的模式,所有参与的类必须遵循通用规格:
如果在你的架构里利用了AOP,故障和应变的处理是理想的在应用里用到的在方面上的候选。对故障和应变的处理在AOP架构下的使用做一个完整的勘探将是将来论文里一个很有意思的题目。
高效的java异常处理相关推荐
- java异常处理框架_深入探索 高效的Java异常处理框架(1)
摘要:本文从Java异常最基本的概念.语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框架,阐述了异常处理的基本原则.并且作者提出了自己处理一个大型应用 ...
- java 解决故意弄得错误,高效的Java错误处理
高效的Java异常处理 Java开发人员可以做出的最重要的架构性决策之一就是如何使用Java异常模型.Java异常一直以来就是社群中许多争议的靶子.有人争论到,在 Java语言中的异常检查已是一场失败 ...
- Java异常处理和设计
Java异常处理和设计 在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常 ...
- 结合大学四年经验,带你揭秘高效自学Java的方法和路线(从认识、方法、反馈3个角度出发)
首发公众号:bigsai 收藏不是真支持,点赞.关注三连才是真支持! 前言 大家好,我是bigsai 好久不见,甚是想念,文章同时收录在回车课堂.本文就自学Java的n个问题和n个方法做出一些建议,并 ...
- 【26天高效学习Java编程】Day22:Java中的属性集-缓冲流-转换流-序列化流详解
本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:26天高效学习Java编程 相关软件地址:软件地址 所有代码地址:代码地址 如果 ...
- 如何高效学习java课程
想要快速进入到java行业,进行系统的培训和有效的学习是非常重要的,那么短时间内如何高效学习java课程呢?来看看下面小编的详细介绍吧. 如何高效学习java课程? 1. 克服自身惰性,学习环境更 ...
- Java异常处理12条军规
摘要: 简单实用的建议. 原文:Java异常处理12条军规 公众号:Spring源码解析 Fundebug经授权转载,版权归原作者所有. 在Java语言中,异常从使用方式上可以分为两大类: Check ...
- Java 异常处理的 9 个最佳实践
Java 异常处理的 9 个最佳实践 原文地址:https://dzone.com/articles/9-... 翻译出处:https://www.oschina.net/trans... 在 Jav ...
- 《转载》Java异常处理的10个最佳实践
本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...
最新文章
- 【51CTO学院三周年】遇到
- 【百度地图API】北京周边7日游——图标按路线轨迹行动
- 三维家导入户型镜像怎么使用_【业】1分钟看懂三维家定制柜设计
- Linux 内核详解以及内核缓冲区技术
- iOS 5解决Could not instantiate class named NSLayoutConstraint问题
- 【python+beautifulsoup4】Python中安装bs4后,pycharm报错ModuleNotFoundError: No module named 'bs4'...
- android studio串号,AndroidStudio使用常见问题集锦
- HDU2066:一个人的旅行
- 百度首席科学家 Andrew Ng谈深度学习的挑战和未来
- java商城_java网上商城系统怎么样?优势又有哪些?
- 大数据Hadoop2.x与Hadoop3.x相比较有哪些变化
- 经典算法面试题目-翻转一个C风格的字符串(1.2)
- Migrations有两个文件迁移数据的方法
- Linux/Android——input_handler之evdev (四) 【转】
- NekoHtml 乱码出现问号的解决
- UC,浏览器,不愧是全球使用量最大的第三方手机浏览器!
- bcc语料库下载_BCC语料库使用指南
- 网易卡搭python怎么用_python爬取+使用网易卡搭作品数量api
- 数据类型和存储上的差别,基本数据类型,引用数据类型
- 输出字符的ascii码
热门文章
- Cocos2d-X开发中国象棋《三》開始场景的实现
- 【转】 Android常用实例—Alert Dialog的使用
- jfinal启动正常,但是报错:oejw.WebAppContext:Failed startup
- javascript 商务通
- DHCP服务器如何检测穿过中继代理的IP地址冲突(gratuitous ARP肯定是不行的)
- 利用多线程提高程序性能(for Android)
- 真5G尚需时日,滑稽的假5G营销已经上演
- Advanced Wlan Attacks (RADIUS)
- PowerShell 学习笔记 - 2 PS Module
- 深化创客教育,用人工智能创造艺术