如何重用异常抛出代码来返回布尔值?

时间:2010-12-14 01:52:16

标签: java exception-handling boolean

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

我也想避免简单地捕捉我正在抛出的所有异常。

编辑:抱歉打字错误

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

  if (SomethingBadHappened)
    return ReportSomethingBad(new ImNotFeelingWellException("I'm not feeling too well..."));

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

以这种方式执行操作将允许异常包含比仅返回false的TryDoingSomething()例程生成的更有用的信息。