我写了一段代码,我想在抛出异常后继续运行。 这里是我的代码:在java中抛出异常后继续运行程序
public class SquareEquationException extends Exception{
public SquareEquationException(){
super("roots are not real numbers");
}
public static void SquareEquation() throws SquareEquationException{
double a,b,c,sqr;
int flag;
Scanner in = new Scanner(System.in);
System.out.println("enter ax^2:");
a=in.nextDouble();
System.out.println("enter bx:");
b=in.nextDouble();
System.out.println("enter c:");
c=in.nextDouble();
sqr=((b*b)-(4*a*c));
if(sqr<0)
throw new SquareEquationException();
else{
sqr=Math.sqrt(sqr);
double x1=(-b+sqr)/(2*a);
double x2 = (-b-sqr)/(2*a);
if(x1==x2)
System.out.println("root is:" + x1);
else
System.out.println("x1 is:"+x1 +"\n"+ "x2 is:"+x2);
}
System.out.println("enter 1 to continue or any key to exit");
flag = in.nextInt();
while(flag==1){
System.out.println("enter ax^2:");
a=in.nextDouble();
System.out.println("enter bx:");
b=in.nextDouble();
System.out.println("enter c:");
c=in.nextDouble();
sqr=((b*b)-(4*a*c));
if(sqr<0){
throw new SquareEquationException();
}
else{
sqr=Math.sqrt(sqr);
double x1=(-b+sqr)/(2*a);
double x2 = (-b-sqr)/(2*a);
if(x1==x2)
System.out.println("root is:" + x1);
else
System.out.println("x1 is:"+x1 +"\n"+ "x2 is:"+x2);
}
System.out.println("enter 1 to continue or any key to exit");
flag=in.nextInt();
}
}
public static void main(String[] args) throws SquareEquationException{
SquareEquation();
}
}
我怎能菜单/程序运行时抛出异常后? 菜单工作:如果用户程序插入1继续运行,否则程序退出。
使用try catch语句和异常处理 – Stultuske
你'Exeption'填充通过'main'方法,因此你的程序中止。你需要“抓住”这个例外并采取相应的行动。如果发生“异常”,立即停止执行,并输入第一个匹配的“catch”块。有关更多信息,您可能需要查看[关于异常的Oracle踪迹](https://docs.oracle.com/javase/tutorial/essential/exceptions/)。 – Turing85