如果我的斜率分母为0,如何抛出异常使其输出“计算失败,x1和x2之间没有变化”...以下块是类文件中的方法。
public double getSlope() {
double rise = p2.getY() - p1.getY();
double run = p2.getX() - p1.getX();
double slope = rise / run;
return slope;
}
我将结果输出到我的Testing文件或包含main方法的驱动程序类。
答案 0 :(得分:4)
if (run == 0) {
throw new IllegalArgumentException("Divide by zero error");
}
答案 1 :(得分:1)
要抛出异常,您需要执行此操作:
public double getSlope() {
double rise = p2.getY() - p1.getY();
double run = p2.getX() - p1.getX();
if (run == 0) throw new Exception(
"Calculation failed, there is no change between x1 and x2");
double slope = rise / run;
return slope;
}
请注意方法中的关键字throw
,这显然不会从main
方法中捕获,因此会崩溃!
答案 2 :(得分:1)
你可以做到
if(run == 0) {
throw new java.lang.ArithmeticException("Calculation failed, there is no change between x1 and x2");
}
double slope = rise / run;
此外,如果更有意义,您可以使用java.lang.IllegalStateException
。
或者java.lang.RuntimeException
如果您只有相关信息。
答案 3 :(得分:1)
当除以零时,它会自动抛出一个名为java.lang.ArithmeticException的异常。
如果你真的想抛出自己的异常,把你的信息或类似的东西,你可以如下:
if(run == 0) {
throw new ArithmeticException("Your message here");
}
请注意,这是一个RuntimeException,您没有义务处理它。如果你想创建一些强迫开发人员处理的东西,你可以创建自己的Exception,但我认为情况并非如此。
答案 4 :(得分:0)
按如下方式修改您的功能:
public double getSlope() throws DivideByZero{
double rise = p2.getY() - p1.getY();
double run = p2.getX() - p1.getX();
if (run == 0) {
throw new MyException("Denominator is zero");
}
double slope = rise / run;
return slope;
}
我的回答还要求您创建一个名为MyException
的自定义异常类。关于这样做的细节留给读者练习。 (提示:Google是一个很棒的工具。)
答案 5 :(得分:0)
试试这个:
public double getSlope() throws Exception {
double rise = p2.getY() - p1.getY();
double run = p2.getX() - p1.getX();
if (run == 0) throw new Exception("Calculation failed.");
double slope = rise / run;
return slope;
}
public class TestLine {
public static void main(String[] args) {
try{
l1.getSlope();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}