假设我有一个if语句块,如果条件为真则抛出异常。如何创建使用相同条件的方法,但返回true或false而不是抛出异常。即,如果抛出异常,则返回false;如果没有抛出异常,则返回true。我想尽可能多地重用代码。
我也想避免简单地捕捉我正在抛出的所有异常。
编辑:抱歉打字错误
答案 0 :(得分:2)
将代码移动到返回布尔值的函数中,然后更改原始函数以调用新函数,并在返回false
时抛出异常。
答案 1 :(得分:0)
让公共代码接受一个委托,如果出现不良情况(可能是一个返回false的函数)将调用该委托。然后:
if (SomethingBadHappened) return ReportSomethingBad(new ImNotFeelingWellException("I'm not feeling too well..."));
例程的“TryDoingSomething”版本(应该返回False而不是抛出异常)应该调用具有委托的公共版本,该委托除了返回false之外什么都不做。 “DoSomethingAndThrowExceptionIfItFails”版本应该使用将抛出传入异常的委托来调用公共例程。
以这种方式执行操作将允许异常包含比仅返回false的TryDoingSomething()例程生成的更有用的信息。