我的异常以及throw和getMessage中的错误是什么



我有代码,我想知道错误在哪里,请你帮我:投掷线上只有一个错误

public static void main(String[] args) {
    try {
        Scanner input = new Scanner (System.in);
        System.out.println("Enter the number ");
        int x1 = input.nextInt();
        int i;
        if (x1>=0&&x1<=100) {
            i= (int) Math.pow(x1,2);
            System.out.println("the squre of  "+ x1 + " is "+ i);
        }
        else 
            throw new MyException();   // what is the error here?
    } catch(MyException me) {
        System.out.println(me);
        String message = me.getMessage();
    }
}
public class MyException extends Exception {
 public String getMessage() {
        return " the number is out of ring";
    }
    }
}

首先,getMessage方法在MyException类之外。其次,您试图调用一个名为getMessage()的方法,这在主方法中是无法完成的,您必须调用me.getMessage();

看起来您还没有完全发布整个类,但根据错误消息,MyException似乎出现在您的类中,类似于:

public class TheClass {
    public static void main(String[] args) {
        ....
    }
    public class MyException extends Exception {
        ....
    }
}

这使得MyException成为内部类。因此,MyException的每个实例都必须"属于"TheClass的一个实例。这就是为什么您会得到"非静态变量this"错误消息。当你说new MyException时,你在静态main方法中,所以它无法知道新的MyException对象将属于TheClass的哪个实例

我认为你不希望这是一个内部阶级。将MyException移动到TheClass外部,或者使其静止:

public static class MyException extends Exception {

使其为静态将使其成为"嵌套"类,而不是"内部"类,这样它就不属于TheClass的实例。不过,你可能想把它搬到外面去。我看不出有什么好的理由把它放在你的另一个班上。

相关内容

最新更新