Запись файлов в Robocode (Java) - PullRequest
1 голос
/ 05 марта 2011

В основном я пытаюсь создать файл журнала в Robocode, но у меня возникают проблемы, так как вы не можете использовать try / catch в Robocode (насколько мне известно). Я сделал следующее:

public void onBattleEnded(BattleEndedEvent e) throws IOException
{
    writeToLog();
    throw new IOException();
}

и

public void writeToLog() throws IOException
{
    //Create a new RobocodeFileWriter.
    RobocodeFileWriter fileWriter = new RobocodeFileWriter("./logs/test.txt");
    for (String line : outputLog)
    {
        fileWriter.write(line);
        fileWriter.write(System.getProperty("line.seperator"));
    }
    throw new IOException();
}

и я получаю следующую ошибку во время компиляции: -

MyRobot.java:123: onBattleEnded(robocode.BattleEndedEvent) in ma001jh.MyRobot cannot implement onBattleEnded(robocode.BattleEndedEvent) in robocode.robotinterfaces.IBasicEvents2; overridden method does not throw java.io.IOException
    public void onBattleEnded(BattleEndedEvent e) throws IOException
                ^
1 error

Ответы [ 2 ]

1 голос
/ 06 марта 2011

но у меня возникают проблемы, так как вы не можете использовать try / catch в Robocode (насколько мне известно)

Откуда пришло это предположение?Я просто из-за вашего вопроса здесь установил robocode (так что это ваша вина, если я буду отвечать здесь реже в будущем), написал свой собственный робот, и он может ловить исключения довольно хорошо:вы бросаете IOException в вашем примере?

1 голос
/ 05 марта 2011

Как вы можете видеть здесь , интерфейс не объявляет никаких проверенных исключений. Таким образом, вы не можете бросить один в своем классе реализации.

Один из способов решить эту проблему - реализовать ваш метод следующим образом:

public void onBattleEnded(BattleEndedEvent e)
{
    writeToLog();   
    throw new RuntimeException(new IOException());
}

public void writeToLog()
{
    //Create a new RobocodeFileWriter.      
    RobocodeFileWriter fileWriter = new RobocodeFileWriter("./logs/test.txt");
    for (String line : outputLog)
    {
        fileWriter.write(line);
        fileWriter.write(System.getProperty("line.seperator"));
    }       
    throw new new RuntimeException(new IOException());
}
...