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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:如何处理错误的方法参数?相关的知识,希望对你有一定的参考价值。

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

public void setCell(int index, String value);

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

我可以想到三个选择:

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

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

答案

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

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

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

另一答案
  1. 抛出一个例外

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

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

以上是关于Java:如何处理错误的方法参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 ValueError:分类指标无法处理多标签指标和多类目标错误的混合

如何处理单个活动的多个片段

片段如何处理触摸?

我如何处理 java 命令行参数? [复制]

如何处理片段和活动中的后压

如何解决错误:使用 RX java 在实现室中“不确定如何处理插入方法的返回类型”