处理许多方法所引发的异常,在许多类中重写

时间:2015-08-21 07:06:15

标签: java exception-handling try-catch method-overriding throws

您好我正在开展一个项目。 我正在覆盖项目中大约100个类的方法,我使用地图填充一些键和值并返回地图。现在map.put()方法抛出4个异常:Null,UnsupportedOperation,IllegalArgument和ClassCast Exceptions。 所以我应该处理所有这些问题。显然我应该,是这样吗?

那么问题是我应该在每个覆盖的方法中处理这些(100个类),或者只是在方法中添加throws关键字并处理我调用这些方法的位置?

什么是更好的做法?它是一个非常关键的项目,不应该没有处理任何异常,否则它可能会崩溃许多其他事情。告诉我观看现实生活中的情景。

5 个答案:

答案 0 :(得分:2)

通常,您应该捕获可以添加一些值的异常。捕获一个您实际上不知道如何处理它的例外是没有用的,并且可能只会模糊问题。

由于Map定义了您应该支持的行为,因此选中的Exception不是一个选项。

由于大多数错误都是编码错误,我会在高级别处理它们,因为您无法在运行时轻松采取纠正措施,即修复是修复代码所以不会发生这种情况。

答案 1 :(得分:1)

首先,在Java中重写方法时无法修改throw子句,并且所有四个例外都是RuntimeException,不需要throw子句。

其次,在考虑如何处理异常之前,了解何时抛出异常非常重要。并且应该忽略一些不管输入是什么而永远不会发生的异常。因此,答案取决于您在代码中使用的Map的实现。

如果您使用HashMap,则不会抛出四个异常中的任何一个,因此您可以忽略它们。

如果您使用TreeMap,如果您将NullPointerException值作为键,则会发生null,而当您的密钥不是{的实例时,ClassCastException会发生Comparable<T> {1}}当前在地图中已有的键中使用。并且您应该确定天气某些输入的重写方法会导致这两个异常。如果是这样,通过抛出自定义异常来处理它们,就像其他答案一样,首选。否则你也可以忽略它们。

答案 2 :(得分:0)

最好编写一个自定义异常并抛出它。在捕捉它时设置正确的信息。 所以最终你的方法需要抛出一个例外。

答案 3 :(得分:0)

看看这个question

答案 4 :(得分:0)

好吧,如果从同一点(或点组)调用所有这些方法,那么传播从它们抛出的异常(在方法声明中添加throws)然后处理它是一个明显的解决方案调用方法中的那些例外。通过这些方式,您可以通过单点来管理异常处理案例。
另外,所有抛出的异常都有特定的含义(就像你说你想处理从map.put()获得的那些),请考虑使用自定义异常。在这里,您有一些指导原则:Guidelines