【问题标题】:How to reuse exception throwing code to return a boolean?如何重用异常抛出代码以返回布尔值?
【发布时间】:2010-12-14 01:52:15
【问题描述】:

假设我有一个 if 语句块,如果条件为真则抛出异常。如何创建一个使用相同条件但返回 true 或 false 而不是抛出异常的方法。即,如果抛出异常,则返回false;如果没有抛出异常,则返回 true。我想尽可能多地重用代码。

我还想尽量避免简单地捕获我抛出的所有异常。

编辑:对不起错别字

【问题讨论】:

  • “抛出一个布尔值”,对吧? :) 但是说真的,您在相应地创建方法时遇到的问题到底是什么?

标签: java exception-handling boolean


【解决方案1】:

将代码移动到返回布尔值的函数中,然后更改原始函数以调用新函数并在返回false时抛出异常。

【讨论】:

  • 听起来异常类型不止一种。
  • @Aaron:那你可以做一个boolean shouldThrow参数。
【解决方案2】:

让公共代码接受一个委托,如果出现不良情况(可能是一个返回 false 的函数),该委托将被调用。那么:

如果(发生了一些事情) return ReportSomethingBad(new ImNotFeelingWellException("我感觉不太好..."));

例程的“TryDoingSomething”版本(应该返回 False 而不是抛出异常)应该调用普通版本的委托,该委托除了返回 false 什么都不做。 “DoSomethingAndThrowExceptionIfItFails”版本应该调用带有一个委托的公共例程,该委托将抛出传入的异常。

与仅由返回 false 的 TryDoingSomething() 例程生成的异常相比,这样做可以让异常包含更多有用的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-11
    • 2012-08-04
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    相关资源
    最近更新 更多