Java编程帮助 - 投掷和捕获异常

时间:2013-10-08 00:20:46

标签: java

我有Java任务,此时我需要帮助。以下是要求:

  1. 创建一个WindowMalfunction和PowerOut Events来模拟GreenhouseControls中可能出现的问题。该事件应在GreenhouseControls中适当地设置以下布尔变量:

    windowok = false;
    poweron = false;

    设置变量后,WindowMalfunction或PowerOut应抛出指定故障条件的异常。创建一个ControllerException类,为此目的扩展Exception。

  2. 如果从WindowMalfunction或PowerOut抛出异常,Controller会捕获异常,然后使用适当的消息启动紧急关闭。向Controller添加一个名为shutdown的方法,并在GreenhouseControls中覆盖此方法以完成关闭。

  3. 我创建了ControllerException类:

    public class ControllerException extends Exception{
    
        public ControllerException(String except){
            super(except);
        }
        public String getMessage(){
            return super.getMessage();
        }
        public void shutdown(){
        }
    }
    

    现在我必须在GreenHouseControls类中实现它。这就是我所做的:

    public class WindowMalfunction extends Event{
        ControllerException newExcep= new ControllerException("Error:");
        public WindowMalfunction(long delayTime) { 
            super(delayTime); 
        }
    
        public void action() throws ControllerException {
        }
    }
    

    现在,在WindowMalfunction的action()方法中,我需要实际抛出我创建的ControllerException。然后,我需要在Controller.run方法中捕获异常。

    public void run() throws ControllerException {
        while(eventList.size() > 0)
        // Make a copy so you're not modifying the list
        // while you're selecting the elements in it:
        for(Event e : new ArrayList<Event>(eventList)) {
            if(e.ready()) {
                System.out.println(e);
                e.action();
                eventList.remove(e);
            }
        }
    }
    

    我该怎么做?

    感谢。

1 个答案:

答案 0 :(得分:0)

action()方法中,您可以执行以下操作来抛出刚刚创建的异常

throw new ControllerException();

run()方法中,action()方法中的try-catch方法调用

try{
action()
}
catch(ControllerException ex){
System.out.println("Woho caught the exception");
}