无法重新抛出,重写,处理或其他的异常

时间:2015-03-11 16:30:14

标签: java exception

我有一个调用此方法的servlet

TemplateLoader.load(TemplateReplacer replacer);

TemplateReplacer的特定实现可以生成MalformedURLException,因为它会替换URL。

我的困境是:

  1. 我不能将此异常留到TemplateLoader级别,因为TemplateLoader是通用的,不应该捕获或抛出MalformedURLException
  2. 我无法处理TemplateReplacer中的异常,因为在这个级别上我无能为力。
  3. 我无法重新抛出RuntimeException,因为正确的事情是在servlet级别捕获异常,我可以通过向用户返回正确的错误消息来处理它。
  4. 但是我找不到一个可以重复使用的现有已检查异常,这些异常足以在TemplateLoader级别有意义。
  5. 我不能使用异常异常,因为在servlet级别捕获异常异常对我来说听起来并不好听。只是捕捉异常被认为是不好的做法。
  6. 我也无法创建自己的异常,因为没有附加值(因为没有可以添加到此自定义异常的真正新代码)
  7. 所以,我陷入了这种困境。你建议我做什么?

1 个答案:

答案 0 :(得分:1)

您的问题的解决方案是定义和使用自定义异常。您在#6中的分析存在缺陷。自定义异常提供的值是将具体实现中可能出现的各种异常组合在一起(封装)。

您可能想要创建多个自定义例外。例如,一个用于指示瞬态问题(并且重试可能有效),一个用于指示配置的基本问题,并且在成功之前需要更改某些内容。如果创建多个异常,则可能应该考虑继承层次结构,因此调用者可以根据需要处理泛型异常或异常的特定风格。