如何在Java中引发错误?

问题描述:

我所做的所有Google搜索似乎都集中在“捕捉”错误。如果满足某些条件,我希望能够提出自己的意见。我尝试使用Error()类及其子类,但Eclipse无法识别它们。如何在Java中引发错误?

这就是我想做的事:

if(some_condition) { 
    foobar(); 
} 
else { 
    // raise an error 
} 

愚蠢的问题,我知道,但我做我的谷歌搜索和我的身影有人在那里将能够帮助我。

在此先感谢!


谢谢大家!如果您在未来读这篇文章,这里的瘦:

  1. 错误在Java中参考的问题,你不应该试图捕捉

  2. 例外是指,你可能想赶上错误。

这里是我的“固定”代码:

if(some_condition { 
    foobar(); 
} 
else { 
    throw new RuntimeError("Bad."); 
} 

我以前RuntimeError()因为,作为一个答案中指出,我没有宣布我事先抛出一个错误,并自我依赖于一个条件,这非常有用。

谢谢大家!

+0

http://stackoverflow.com/questions/1754315/how -to-create-custom-exceptions-in-java – Jayan

+0

请将您的发现发布为答案并将其标记为正确,以便人们能够轻松地分辨出问题与答案之间的差异。 –

+1

它应该是: throw new RuntimeException(“Bad。”); –

在这里你去:

throw new java.lang.Error("this is very bad"); 

更地道抛出异常的子类。特别是RuntimeException未被选中(例如,方法不需要声明它们可能会抛出它)。 (好吧,错误也是,但它应该被保留用于不可恢复的事情)。

throw new java.lang.RuntimeException("this is not quite as bad"); 

注意:您实际上并不需要在此刻构建它们。你可以扔预构建的。但构建它们的一件好事是,它们记录它们所在的代码行以及构建时发生的完整调用堆栈,因此,在创建新调用时,如果构建一个新的调用堆栈,它会向其注入非常有用的诊断信息。

+0

太棒了!我会给你“接受”的答案thingy,但是@Tim Biegeleison的s/o,他也非常有帮助:^) –

尝试抛出一个异常:

public void yourMethod() throws Exception { 
    if (some_condition) { 
     foobar(); 
    } 
    else { 
     throw new Exception("Something bad happened."); 
    } 
} 
+1

现在我觉得哑巴了。所以异常是java中的错误(来自python背景)?这解释了很多。谢啦。 –

+0

如果你最终编写好的Java代码,这并不愚蠢。 –

+0

后续行动(对不起,如果我滥用这个),错误和异常之间的区别是什么? –

Java中的错误称为异常(See this)。

if(some_condition){ 
    foobar(); 
} else { 
    throw new Exception(); 
} 

形式上,错误是从Throwable扩展的任何类。

Throwable类是Java语言中的所有错误和异常的超类,它们是 。 Java虚拟机仅引发该类的实例对象(或其某个子类),或者Java throw语句可引发 。同样,只有这个类或其子类中的一个可以是catch子句中的参数类型。对于 编译时检查异常的目的,Throwable和任何不属于 RuntimeException或Error的子类的Throwable的任何子类都被视为检查异常。

...

https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html

你试图提高在仅控制台错误?或者你是否试图向用户显示错误?

在这种情况下,您可以使用JOptionPane创建错误对话框。

+0

控制台只,但谢谢你的提示! –

+0

@eli_dink当然:) –

+0

@eli_dink看看这个错误与异常:https://stackoverflow.com/questions/5813614/what-is-difference-between-errors-and-exceptions –

没有必要感到愚蠢的:-) 您可以创建自己的异常,例如,

public class UnknownUnitException extends Exception{ 
    private String message = null; 
    public UnknownUnitException() { 
     super(); 
    } 
    public UnknownUnitException(String message) { 
     super(message); 
     this.message = message; 
    } 
    public UnknownUnitException(Throwable cause) { 
     super(cause); 
    } 
    @Override 
    public String toString() { 
     return message; 
    } 
    @Override 
    public String getMessage() { 
     return message; 
    } 
} 

我建议Lesson: Exceptions at the Java Tutorials