当前位置: 首页 > 面试题库 >

您如何在Java中以及在何处定义自己的Exception层次结构?

卫甫
2023-03-14
问题内容

您如何在Java中以及在何处定义自己的Exception层次结构?

我的主要问题涉及必须定义Exception类的包位置。

我们是否为异常创建一个特殊的程序包并将所有类放入其中?


问题答案:

我将此作为一般规则。

  • 在适当的地方,使用预定义的Java异常。例如,如果您的代码有某种I / O错误,则抛出IOException是可以的。
  • 仅当需要在try / catch块中区分两个异常时,才使用异常层次结构。很多时候,让单个组件抛出具有不同消息,针对不同错误的单个异常类型是非常好的。如果用户真的不能做任何事情来专门处理错误,请使用相同的通用异常类。如果用户能够以不同的方式处理它们,那就应该使用层次结构。
  • 对于层次结构,请勿使来自不同组件的所有异常都继承自基本异常。没有真正的理由这样做。如果消费者想要捕获任何东西,他们可以简单地捕获Exception。
  • 对于包的位置,我放置了一个Exception类及其相关的代码。因此,如果我在abc包中有一个BusinessService,则要有一个abcBusinessException。我不喜欢将所有异常放入异常包中。这只是很难找到。


 类似资料:
  • 问题内容: 在Eclipse中,有一些模板可以通过自动插入一些代码或注释来帮助您。您可以自己通过首选项> Java>编辑器>模板来编辑这些模板。您可以使用所谓的“模板变量”来使这些模板更智能。 例如,有一个$ {see_to_overridden}变量,它在Javadoc注释中插入了“ @see my.package.name.SpuerclassName#methodName(int,my.ot

  • 作业:请引导我帮助引导我,不要发布完整的代码 我的老师让我们实现一个LinkedList作为家庭作业。这是类shell的标题: 注意,他正在实现Iterable和Iterator接口。然后我明白了我需要在类中实现迭代器()、hasNext()、next()和remove()方法。但让我困惑的是,他没有将迭代器接口所需的方法放在单独的内部类中。以下所有方法都在LinkedList类中定义: 迭代器(

  • 我想编写自己的定位器来访问元素。WebDriver的API目前提供了八个定位器,允许按id、名称属性、标记名、完整或部分链接文本、XPath、类名和css选择器检索元素。然而,这些默认定位器现在对我来说还不够,因为我必须通过一个新属性访问元素。让我举个例子,这样你就能明白我在这里真正想要的是什么。 示例:选择您的用户名: 现在,我想编写一段代码,以便使用myLocator定位器访问用户名按钮,如:

  • 问题内容: 假设您需要定义一个仅包含常量的类。 这样做的首选方式是什么? 接口 抽象类 最终班 我应该使用哪一个?为什么? 澄清一些答案: 枚举 -我将不使用枚举,我不会枚举任何东西,只是收集一些彼此不相关的常量。 接口 -我不会将任何类设置为实现该接口的类。只是想使用该接口来调用常量,例如:。 问题答案: 使用期末课程。为简单起见,您可以使用静态导入在另一个类中重用您的值 在另一堂课中:

  • 好的,在laravel 4中,如果我想添加自己的自定义类,例如:库\myFunction.php然后我执行以下步骤: 添加myFunctions.php到app/库/myFunctiosn.php 在app/start/global.php,在ClassLoader::addDirectory(数组(,我添加app_path()。 为了在我的刀片视图中调用它,我添加了以下代码 它是有效的。 但是如

  • 更新(阅读后传递额外的属性到maven原型:生成): 我创造了自己的原型。src/main/资源/原型资源/pom.xml: 想要使用我自己的第三方deps工件和第三方deps版本参数。所以我添加了src/main/resources/META-INF/maven/archetype元数据。xml文件: 将archetype安装到我的本地存储库中。然后根据我的自定义原型创建工件: mvn原型:生成