异常类不起作用

时间:2016-11-21 22:31:59

标签: java exception io compiler-errors

我有一个程序,我正试图抛出某个异常。我在这里创建了一个自定义的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; 
   }
}

但是,这不会编译,并且告诉我必须捕获或声明抛出我的形状异常错误。我究竟做错了什么?这不是宣布的吗?

2 个答案:

答案 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