我正在编写一个带有以下签名的方法:
public void setCell(int index, String value);
此方法的问题在于index参数具有在运行时决定的有限范围,并且调用者可能会意外地使用其超出范围的值。在这种情况下我该怎么办?
我可以想到三个选择:
一般来说,您如何决定使用哪些选项?
理想情况下,您希望尽早抛出异常(fail-fast)或让异常自然发生,在这种情况下,它会提升或冒泡到调用方法以指示异常的原因而不是在异常中捕获异常try/catch
并让执行继续。
我还会避免选项2,如果索引超出范围,它会立即返回,因为调用方法现在无法知道执行是否已成功完成。事实上,这是一种帮助程序隐藏错误而不是试图发出错误的方法,这在某种程度上与JB Nizet的评论有关。
如果被调用的方法成功完成其逻辑或由于某种原因,它最好保持调用者通知,但它没有这样做。
您甚至可以实现自己的例外。使用哪种情况取决于您的应用程序和应用程序设计。在大多数情况下,未捕获或未处理的异常可能是最糟糕的情况。
如果你有一个用户界面,你通常可以处理异常并通知用户,如果你正在实现库函数,你宁愿抛出它们并将它们传递给更高级别。