我想要做的是在2到60之间给出一个数字。如果这个数字不包括在这个"空间"那么会有一个名为InvalidLicenceNumberException
的异常。我有和类UserInput,但它不需要上传它的确定
我的主要:
import java.io.*;
public class Exercv {
public static void main(String[] args) {
int ArTh ;
ArTh=Vehicle.NumberPos();
try {
if(ArTh<2 || ArTh>60){
ArThEx();
}
} catch(InvalidLicenceNumberException e){
System.out.println(""+e);
throw new InvalidLicenceNumberException ("There is an exception!");
}
}
我的班级车辆:
public abstract class Vehicle {
static int user; //for userinput
public static int ArTh() {
System.out.println("Give number between 2 until 60");
user=UserInput.getInteger();
if(user>=2 && user<=60){
System.out.println(" Possition is : "+ user);
}
return user;
}
public static void ArThEx() throws ArithmeticException{
System.err.println("There is an exception");
System.err.println("Positions arent acceptable");
}
}
我的班级例外:
import java.lang.Exception;
public class InvalidLicenceNumberExceptio extends MyException {
public InvalidLicenceNumberExceptio(String s){
super(s);
}
}
答案 0 :(得分:0)
你可能想要类似下面的代码。
请注意,没有必要从main方法重新抛出异常,因为无论如何都不会捕获它。
因此,只需打印您的消息并让程序完成(可能强制退出代码System.exit
)
public static void ArThEx() throws InvalidLicenceNumberException{
System.err.println("There is an exception");
System.err.println("Positions arent acceptable");
throw new InvalidLicenceNumberException("Out of range");
}
答案 1 :(得分:0)
尝试更改你的ArThEx方法,并告诉我它是否有效
public static void ArThEx() throws ArithmeticException{
System.err.println("There is an exception");
System.err.println("Positions arent acceptable");
throw new InvalidLicenceNumberExceptio();
}
答案 2 :(得分:0)
您可以直接抛出异常,例如:
if (user < 2 || user > 60) {
throw new InvalidLicenceNumberException("Your number needs to be between 2 and 60");
System.exit(1);
}
或者将其封装在你的ArThEx函数中,这通常是一种更好的做法。
public static void ArThEx() throws InvalidLicenceNumberException {
throw new InvalidLicenceNumberException("Your number needs to be between 2 and 60 (you typed " + user + ")");
System.exit(1);
}