Java 如何为除以0引发异常?
如果斜率的分母为0,如何抛出异常以使其输出“计算失败,x1和x2之间没有变化”…下面的块是类文件中的一个方法Java 如何为除以0引发异常?,java,exception,constructor,try-catch,private-methods,Java,Exception,Constructor,Try Catch,Private Methods,如果斜率的分母为0,如何抛出异常以使其输出“计算失败,x1和x2之间没有变化”…下面的块是类文件中的一个方法 public double getSlope() { double rise = p2.getY() - p1.getY(); double run = p2.getX() - p1.getX(); double slope = rise / run; return slope; } 我正在将结果输出到我的测试文件或包含main方法的驱动程序类。要引发
public double getSlope() {
double rise = p2.getY() - p1.getY();
double run = p2.getX() - p1.getX();
double slope = rise / run;
return slope;
}
我正在将结果输出到我的测试文件或包含main方法的驱动程序类。要引发异常,需要执行以下操作:
if (run == 0) {
throw new IllegalArgumentException("Divide by zero error");
}
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
方法中取消捕获,因此将崩溃 要引发异常,您需要执行以下操作:
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
方法中取消捕获,因此将崩溃 按如下方式修改您的函数:
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
的自定义异常类。有关执行此操作的详细信息留给读者作为练习。(提示:谷歌是一个很棒的工具。)按如下方式修改您的功能:
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
的自定义异常类。有关执行此操作的详细信息留给读者作为练习。(提示:谷歌是一个很棒的工具。)试试这个:
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());
}
}
试试这个:
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());
}
}
你能行
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
,如果您仅与消息相关。您可以这样做
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
如果只与消息相关。当您除以零时,它会自动抛出一个名为java.lang.ArrithmeticException的异常
如果你真的想抛出你自己的异常,把你的消息或类似的东西,你可以如下:
if(run == 0) {
throw new ArithmeticException("Your message here");
}
请注意,这是一个RuntimeException,您没有义务处理它。如果您想创建一些强制开发人员处理的东西,您可以创建自己的异常,但我认为不是这样。当您除以零时,它会自动抛出一个名为java.lang.arithmetricException的异常 如果你真的想抛出你自己的异常,把你的消息或类似的东西,你可以如下:
if(run == 0) {
throw new ArithmeticException("Your message here");
}
请注意,这是一个RuntimeException,您没有义务处理它。如果你想创建一些迫使开发人员处理的东西,你可以创建你自己的异常,但我认为不是这样。
If(分母==0)//告诉用户他不能除以零
,但是如果你不关心抛出什么样的异常,那么有一个90度的斜率,您不必做任何事情:将已经抛出一个算术异常
。如果(分母==0)//告诉用户他不能除以零
,但是如果您不关心抛出的异常类型,则会有一个90度的斜率,您无需执行任何操作:将已引发算术异常
。字符串中的拼写…^字符串中的XD拼写…^它仅对整数有效1.0/0
不会这样做。这仅适用于整数<代码>1.0/0不会这样做。