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

时间:2017-12-17 20:39:18

标签: java error-handling

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

public void setCell(int index, String value);

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

我可以想到三个选择:

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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