Java中的非异常异常?

时间:2012-03-28 11:41:13

标签: java exception

java是否有库异常类,这意味着实际上不是错误,而是良好的终止?我知道我可以自己上课或使用null,但希望知道。

编辑1

我想将异常对象用作方法的旧时尚返回代码,因此我需要与Win32 API中的ERROR_SUCCESS代码等效的内容。

8 个答案:

答案 0 :(得分:6)

Java中的异常仅用于异常终止。使用它们标记正确的终止应该被认为是非常糟糕的做法。

您可以使用返回值。

答案 1 :(得分:1)

我能想到的与“良好终止”信号最接近的不是异常,而是以System.exit(int)为参数调用{{3}},向操作系统表明程序已结束成功。来自javadocs:

  

终止当前运行的Java虚拟机。该参数用作状态代码;按照惯例,非零状态代码表示异常终止。此方法在类Runtime中调用exit方法。此方法永远不会正常返回。

正如已经指出的那样,一个例外是用于通知“良好终止”,恰恰相反。

答案 2 :(得分:1)

直接回答你的问题:不。没有标准的Java异常意味着“这是正常终止”。

如果您愿意,可以为您的应用程序定义一个自定义异常。

然而,

...使用“正常控制流”的例外违背了Java设计者的强烈建议,以及几乎普遍接受的Java“最佳实践”规则。这并不是说你永远不应该这样做。只是说这样做是合理的情况是非常罕见的。 (而且你需要采取特殊措施来避免代价非常低效的代码......)

无论如何,使用异常进行正常流量控制(几乎)总是一个可怕的想法,这解释了为什么从未创建过标准异常。 Java设计者显然不希望看起来鼓励这种做法。

答案 3 :(得分:0)

没有。例外意味着特殊情况。您应该构建程序流程,以便仅在特殊情况下抛出异常,而不是在正常流程上抛出异常。

因此,如果您想要返回“成功”:返回true或某些枚举Result.SUCCESS

答案 4 :(得分:0)

例外意味着表示出现了问题。不同的例外描述了出错的不同项目,因此如果不处理则会导致程序终止。成功完成的事情也不例外。

我认为您需要做的是返回特定值,否则,让您的应用程序触发某种event。在这种情况下,建议抛出异常(至少对我来说)。

答案 5 :(得分:0)

取决于您定义为"良好终止"我想 - 这是一个安全例外,因为它阻止了某人攻击您的系统?这不是一个真正的错误,但这是一个你需要处理的异常情况。

一般情况下,例外情况仅用于特殊情况(代码中可能存在或可能不存在错误 - 可能意味着某些资源不可用,或安全检查失败等。)

如果您使用常规控制流的异常(即它们在正常的预期情况下被抛出),那么您可能做错了什么。

答案 6 :(得分:0)

也许你的意思是InterrupedException?当你想要优雅地终止线程时,抛出这个。

答案 7 :(得分:0)

正如其他一些回复所说,当没有例外时,什么都没有。

因此,在其余指令之后,您可以将代码中的“无异常”放入try块中。类似的东西:

try{
  //code here

  //code of no exception
}catch(Exception e){
  //nothing or exception code
}

或者您可以通过执行扩展Exception

的类来创建自己的异常