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

对异常使用泛型是否明智?

吴德辉
2023-03-14
问题内容

我的团队正在清理我们对throws Exception它们的使用,并以特定的例外除去或替换它们。

一个常见的抛出是因为找不到实体。我们应该为每个实体类抛出泛型NotFoundException还是特定SomeClassNotFoundException的?

如果我们应该抛出特定的异常,是否应该为每种实体类型创建特定的Exception类?我们可以安全地使用泛型吗?像这样class NotFoundException<T extends EntityBaseClass> extends Exception,然后构造函数负责声明我们要处理的实体类型?

如果我们应该抛出特定的异常而不使用泛型,那么这些异常应该扩展还是实现NotFoundException抽象类或接口?


问题答案:

一个简单的试题测试

我们应该为每种实体类型创建一个特定的Exception类吗?

在任何情况下,我们都需要编写一个catch子句来捕获某个类X 而不是其他任何类 抛出的“未找到”异常吗?

如果答案是“是”,则需要另外一个答案ClassXNotFoundException;否则,可能不是。

至于问题的后半部分,该语言不允许将泛型用于异常类型。



 类似资料:
  • 根据我读到的其他问题(为什么重写方法不能抛出比重写方法更广的异常?以及Java方法抛出异常) 我知道子类中的重写方法必须抛出在重写方法中抛出的异常的相同或一个子类。 Java方法总是至少抛出一个类型为exception的异常吗? ...换句话说,编译器添加抛出异常 因此类X将如下所示 我想澄清的是,对于始终添加默认异常处理程序异常这一事实,我没有搞错。 相关问题: IOException与Runt

  • 问题内容: 给定一些类,这两个方法声明是否等效? 和 问题答案: 对于呼叫者:是的,它们是等效的。 对于方法中的代码:否。 不同之处在于,在第一个示例的代码中,您可以使用类型T(例如,保存由创建的对象),而在第二个示例中,您不能使用类型T。

  • 问题内容: 我希望了解这个概念: object-通用,将被擦除为实际类型。 对象-将被擦除成什么? 目的; 之间有什么区别,和? 我可以很容易地理解#1,但是呢: 两者有什么区别?我读到我不能像其他变量一样显式地使用变量,它与对象而不是类型有关。 但是实际原因是什么?为什么不能只写一个对象()而不是通配符()?我不知道这两种情况下的对象类型。 另外,我想知道擦除的目的是什么? 问题答案: 我将列出

  • 我有一个小的性能问题,当使用try-catch子句时,最好指定可以获得的确切异常,或者只使用exception它更好?例子: 或者如果你不介意什么样的例外: 因为我知道你可以使用不同的异常来触发不同的效果,但我只是要求性能。

  • 我在覆盖接口中声明的方法时遇到了一些问题,该方法使用泛型参数作为其异常,并使用泛型作为其参数之一。为了说明,我编写了以下代码接口 通过javac运行,我得到 请注意,在接口中,metodoA和metodoB之间的唯一区别在于它们的参数。 为什么Implementadora(Implementadora)的metodoB(metodoB)(代码)不重写Interfaz(代码),但重写metodoB(

  • 我创建了一个配置对象检查器函数,它基本上检查对象是否与蓝图匹配。与React道具类型的工作原理非常相似。我将使用它在不同的网站上使用不同的配置文件自动部署应用程序,以确保在尝试部署之前正确定义配置文件。 我有一个函数,它接受一个对象并返回一个函数。 获取一个蓝图,说明我们期望对象中的键是什么,指定键的值类型是什么,以及它们是可选的还是必需的。返回一个函数,该函数以两个对象为参数。 参数是我们计划用