Java:如何处理错误的方法参数?

问题描述 投票:1回答:2

我正在编写一个带有以下签名的方法:

public void setCell(int index, String value);

此方法的问题在于index参数具有在运行时决定的有限范围,并且调用者可能会意外地使用其超出范围的值。在这种情况下我该怎么办?

我可以想到三个选择:

  1. 没什么 - 让整个线程崩溃并使用未捕获的运行时异常进行刻录
  2. 如果索引超出范围,立即返回 - 调用者将不知道该方法失败但程序不会崩溃
  3. 抛出异常/强制用户在try / catch块中包装调用。对于该方法的用户来说,这似乎有点过分和乏味

一般来说,您如何决定使用哪些选项?

java error-handling
2个回答
1
投票

理想情况下,您希望尽早抛出异常(fail-fast)或让异常自然发生,在这种情况下,它会提升或冒泡到调用方法以指示异常的原因而不是在异常中捕获异常try/catch并让执行继续。

我还会避免选项2,如果索引超出范围,它会立即返回,因为调用方法现在无法知道执行是否已成功完成。事实上,这是一种帮助程序隐藏错误而不是试图发出错误的方法,这在某种程度上与JB Nizet的评论有关。

如果被调用的方法成功完成其逻辑或由于某种原因,它最好保持调用者通知,但它没有这样做。


0
投票
  1. 抛出一个例外

您甚至可以实现自己的例外。使用哪种情况取决于您的应用程序和应用程序设计。在大多数情况下,未捕获或未处理的异常可能是最糟糕的情况。

如果你有一个用户界面,你通常可以处理异常并通知用户,如果你正在实现库函数,你宁愿抛出它们并将它们传递给更高级别。

© www.soinside.com 2019 - 2024. All rights reserved.