如何在java

时间:2016-01-22 03:21:36

标签: java exception custom-errors

我所做的所有Google搜索似乎都集中在"捕捉"错误。如果满足某些条件,我希望能够提高自己。我尝试使用Error()类及其子类,但Eclipse并不认识它们。

这就是我想要做的事情:

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

愚蠢的问题,我知道,但我已经完成了我的谷歌搜索,我认为有人可以帮助我。

提前致谢!

谢谢大家!如果你将来读这篇文章,这就是瘦:

  1. Java中的错误指的是您不应该尝试捕获的问题

  2. 例外是指您可能想要捕获的错误。

  3. 我的"固定"代码:

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

    我使用了RuntimeError()因为,正如一个答案所指出的那样,我不必事先声明我犯了错误,因为我依赖于某个条件,这非常有用。

    全部谢谢!

5 个答案:

答案 0 :(得分:30)

你走了:

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

更多惯用于抛出Exception的子类。特别是RuntimeException未经检查(例如,方法不需要声明它们可能会抛出它)。 (好吧,错误也是如此,但它应该被保留用于不可恢复的事情。)

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

注意:那时你实际上并不需要构建它们。你可以扔掉预先构建的。但是构建它们的一个好处是它们记录了它们所在的代码行以及构造时发生的完整调用堆栈,因此在抛出它时正确构建一个新的函数会为它注入非常有用的诊断信息

答案 1 :(得分:6)

尝试抛出异常:

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

答案 2 :(得分:1)

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

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

正式地,错误是从Throwable扩展的任何类。

  

Throwable类是所有错误和异常的超类   Java语言。只有作为此类实例的对象(或   其中一个子类)由Java虚拟机抛出或者可以   被Java throw语句抛出。同样,只有这个类或   其子类之一可以是catch子句中的参数类型。对于   编译时检查异常,Throwable和any的目的   Throwable的子类,也不是它们的子类   RuntimeException或Error被视为已检查的异常。

     

...

     

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

答案 3 :(得分:1)

您是否只想在控制台中引发错误?或者您是否试图向用户显示错误?

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

答案 4 :(得分:1)

无需感到愚蠢:-) 您可以创建自己的例外,例如,

@Override

我建议Lesson: Exceptions at the Java Tutorials