【问题标题】:How can I raise an error in if-else function in javajava - 如何在java中的if-else函数中引发错误
【发布时间】:2016-04-28 13:34:27
【问题描述】:

我所做的所有谷歌搜索似乎都集中在“捕捉”错误上。如果满足某些条件,我希望能够提高自己的水平。我尝试使用 Error() 类及其子类,但 Eclipse 无法识别它们。

这就是我想做的:

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

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

提前致谢!


谢谢大家!如果你以后要读这篇文章,这里是瘦的:

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

  2. 异常是指您可能想要捕获的错误。

这是我的“固定”代码:

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

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

谢谢大家!

【问题讨论】:

  • 请将您的发现作为答案发布并将其标记为正确,以便人们能够轻松区分您的问题和答案。
  • 应该是:throw new RuntimeException("Bad.");
  • 我第二个 Jake 嗯,没有编译时出现 RuntimeError,请您更正或详细说明

标签: java exception custom-errors


【解决方案1】:

给你:

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

抛出异常的子类更惯用。特别是 RuntimeException 是未经检查的(例如,方法不需要声明它们可能会抛出它)。 (嗯,Error 也是,但它应该是为不可恢复的东西保留的)。

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

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

【讨论】:

  • 太棒了!我会给你“接受”的答案,但对@Tim Biegeleison 来说,他也很有帮助:^)
【解决方案2】:

尝试抛出异常:

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

【讨论】:

  • 我现在感觉很笨。那么异常是java中的错误(来自python背景)?这解释了很多。谢谢大佬。
  • 跟进(对不起,如果我在滥用这个),实际上错误和异常之间有什么区别?
  • ErrorThrowable 的子类。
  • 来自Javadoc for Error:在编译时检查异常时,错误及其子类被视为未经检查的异常。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

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

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

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

    ...

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 2014-04-27
      • 1970-01-01
      相关资源
      最近更新 更多