我有一个程序,我正试图抛出某个异常。我在这里创建了一个自定义的Exception类:
import java.io.*;
public class ShapeException extends Exception
{
public ShapeException(String message)
{
super(message);
}
}
这是我尝试实现异常的类:
import java.io.*;
public class Circle
{
private double radius;
public Circle(double inRadius )
{
if(inRadius < 0.0)
{
throw new ShapeException("Shape Exception Occurred...");
}
else
{
radius = inRadius;
}
}
public double getRadius()
{
return radius;
}
public void setRadius(double newRadius)
{
if(newRadius < 0.0)
{
throw new ShapeException("Shape Exception Occurred...");
}
else
{
radius = newRadius;
}
}
public double area()
{
return Math.PI * radius * radius;
}
public void stretchBy(double factor )
{
if(factor < 0.0)
{
throw new ShapeException("Shape Exception Occurred...");
}
else
{
radius = radius * factor;
}
}
public String toString()
{
return "Circle Radius: " + radius;
}
}
但是,这不会编译,并且告诉我必须捕获或声明抛出我的形状异常错误。我究竟做错了什么?这不是宣布的吗?
答案 0 :(得分:1)
在Java中有两种类型的Exception。您正在使用的名为Checked Exception,用于可恢复的错误。抛出Checked Exception时,您必须处理它。您可以使用try-catch块处理它所在的位置。
try {
methodThrowingShapeException()
} catch (ShapeException e) {
// Log and handle the Exception
}
永远不要将catch块留空!
或者您可以声明它在方法签名中抛出,在这种情况下,异常必须由方法的调用者处理。
public void setRadius(double newRadius) throws ShapeException
答案 1 :(得分:1)
在Java抛出已检查的异常时,您需要在方法签名中使用$("<td BGCOLOR='#F9ED6E'><font color='#ff2500'></font></td>").text(object[property]).appendTo(row);
关键字声明它。下面是没有任何编译错误的代码片段,因为每个方法在throws
被抛出的地方都有throws
声明。
ShapeException