Java:价值处理过高 - 最佳实践?

问题描述:

这既是一个特定的问题,也是一个基本问题:Java:价值处理过高 - 最佳实践?

我正在从配置文件中读取值,它必须高于某个X或者我赢了;否则能够正确运行我的程序。

如果该值低于x ...

  1. 它是一个正确的做法扔在这种情况下独善其身?
  2. 如果是 - 我应该使用预定义的异常(以及哪一个)或者我应该创建自己的异常类,并且是否应该从其他异常类扩展它?

谢谢。

+0

1.只有当它对程序的其余部分至关重要,否则不是(仍然通知用户可能)2.取决于它的重要程度以及是否已经存在一个会导致错误的异常(在你的情况下,我不会'认为除了'RuntimeException'外只有一个应该被使用的错误是非常重要的) – XtremeBaumer

+0

读取输入,'if(input> x)抛出新异常(“输入大于x”);'?像这样? –

+1

这是一个完全取决于您的具体情况的设计决定。作为设计师,您需要确定这种错误有多严重,以及是否有任何好的方法可以从中恢复。 –

在这种情况下抛出异常是否正确?

抛出异常是一个有效的选择。另一个有效的选择是使用一些合理的默认值,并记录用户解释发生了什么的警告。

选择取决于配置值的敏感程度。你必须对此做出个案决定。

我应该使用预定义的异常(以及哪一个)或者我应该创建自己的异常类,并且应该从其他异常类扩展它吗?

如果您选择抛出,取而代之的是默认值的异常,抛出从Exception派生自定义异常,以使其“检查”。这将确保有代码处理调用代码中的异常。

1.)是
2.)制作你自己的一个,以你的加载的值的含义命名。 您可以简单地扩展IllegalArgumentException或NumberFormatException。

您越精确越好 - 使您的应用程序的代码和行为更清晰。

如果您正在谈论的值对于应用程序来说具有中心/突出的意义,那么我会用更精确的方式扩展NumberFormatException。如果有更多的值比这个没有明显含义的值还可以简单地使用NumberFormatException而不是扩展它。

+0

但为什么?这只是你目前的看法 – AxelH

+0

他询问“正确的做法”。这是正确的做法。没有必要为此争论。它非常干净,准确地识别事件。 – ospf

+0

@ospf不管它是否被普遍接受为正确的做法并不重要,解释它为什么是正确的仍然很有价值... –