首页 / 知识
在Java中创建异常的一般经验法则是什么?
2023-04-13 04:10:00

What is the general rule of thumbs for creating an Exception in Java?我遇到过两种情况:
在这两种情况下,项目都开始正常,但很快就成了维护(和重构)的开销。 那么关于创建自己的Exception类的最佳实践是什么? Java专家写了一篇有关Java异常的文章,其中列出了一些创建异常的"最佳实践",总结如下:
别做我公司的开发人员。有人创建了一个类似于java.lang.IllegalArgumentException的[sic] InvalidArguementException,现在我们在(字面上)数百个类中使用了它。两者都表明方法已传递了非法或不适当的参数。谈论浪费... Joshua Bloch在《有效的Java编程语言指南》(最佳实践的第一本圣经)中对此做了介绍。第8章例外项42:赞成使用标准例外。这是他说的话,
也就是说,您永远不要抛出Exception本身。 Java具有一堆精心选择的,多样化且针对性强的内置异常,这些异常可以覆盖大多数情况,并描述发生得很好的异常,以便您可以纠正原因。 对以后必须维护您的代码的程序员友好。 我的经验法则是,当客户端(调用方)可能合理地希望做一些不同的事情时,根据抛出的异常类型,还可以保证其他异常类型。但是,通常不需要多余的异常类型。例如,如果调用方正在编写类似 的代码
那么显然不需要附加的异常类型。我经常看到(或被迫)编写这样的代码,因为被调用的代码在创建新异常类型时过于热情。 如果我找不到名称描述引起错误的类型的异常,那么请自行解决。 那是我的经验法则。 基本上,每个作业都应拥有自己的例外。捕获异常时,您不会像对待对象那样区分不同的实例,因此需要不同的子类型。我看不到使用太多自定义异常的情况。 一种建议是根据需要创建异常,如果很明显一种异常类型是另一种的重复类型,则可以通过合并两者来重构代码。当然,如果从一开始就将某些想法用于构造异常,这将有所帮助。但通常,对于与现有的特定于情况的异常没有1:1对应的所有情况,请使用自定义异常。 另一方面, 创建自己的异常时:
我自己的经验法则: 我从来不会抛出异常,除非在单元测试中抛出的异常是无关紧要的,并且没有理由花费任何额外的时间。 我为自定义业务逻辑中发生的错误创建了自己的自定义异常类型。尽可能使用此异常类型来重播其他异常,除非在某些情况下客户端可以看到实际发生的情况。 不要吃异常,将它们抛出https://stackoverflow.com/a/921583/1097600 避免创建自己的异常。使用以下已经存在的名称。
引发未经检查的异常。 例
|
最新内容
相关内容
python怎么打包整个项目
python怎么打包整个项目,环境,标准,项目,培训,工作,工具,脚本,状况,以上,版本,distutils-Python自带的基本安装工具,适用于非常简单的应用场python让Python代码更易维护的工具
python让Python代码更易维护的工具,代码,工具,培训,关于linux:Eclipse 3.2.2内容有助于
关于linux:Eclipse 3.2.2内容有助于不在项目中查找类,关于linux:Eclipse 3.2.2内容有助于不在项目中查找类,查找,项目,升级到,辅助,EclVisual Studio 2008 Web应用程序项
Visual Studio 2008 Web应用程序项目中设计器文件的目的是什么?,Visual Studio 2008 Web应用程序项目中设计器文件的目的是什么?,网站写得很好的开源项目(用于学习)?
写得很好的开源项目(用于学习)?,写得很好的开源项目(用于学习)?,学习,编程,开放源代码,程序,Well written open source projects (for关于开源:组织我的C项目代码及其外
关于开源:组织我的C项目代码及其外部库的最佳方法是什么?,关于开源:组织我的C项目代码及其外部库的最佳方法是什么?,项目,启动,将在,它关于语言不可知论:奖励*完整*初学者
关于语言不可知论:奖励*完整*初学者的代码项目,关于语言不可知论:奖励*完整*初学者的代码项目,项目,编程,的人,很好,Rewarding code pr关于Java:大型Maven项目的存储库布
关于Java:大型Maven项目的存储库布局,关于Java:大型Maven项目的存储库布局,模块,结构,应用程序,类似于,Repository layout for large MDelphi和COM:TLB和维护问题
Delphi和COM:TLB和维护问题,Delphi和COM:TLB和维护问题,应用程序,内核,公司,是在,Delphi and COM: TLB and maintenance issues在我工关于svn:版本控制中的项目结构
关于svn:版本控制中的项目结构,关于svn:版本控制中的项目结构,方法,项目,版本控制,我很,Structure of Projects in Version Control我关于Visual Studio:在具有多个项目
关于Visual Studio:在具有多个项目的解决方案中,如何将VS2008配置为仅打开一个Web服务器?,关于Visual Studio:在具有多个项目的解决方关于svn:跨多个项目的Subversion版
关于svn:跨多个项目的Subversion版本号,关于svn:跨多个项目的Subversion版本号,项目,版本号,控制,在我,Subversion revision number ac