有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我的switch语句会生成IOException

我有一句话:

public Player player(Colour colour, ScotlandYardView view, String mapFilename) {
    switch (typeMap.get(colour)) {
        case AI:
            return new RandomPlayer(view, mapFilename);
        case GUI:
            return gui(view);
        default:
            return new RandomPlayer(view, mapFilename);
    }
}

我得到了未处理的IOException错误。这是为什么?我该如何解决


共 (2) 个答案

  1. # 1 楼答案

    好吧,除了codegasmer的答案之外,让我至少回答一下为什么部分:这只是因为您调用的任何方法都会抛出IOException。这可能是typeMap。get()(在本例中我不希望出现这种情况,但在理论上是可能的),“gui”方法或RandomPlayer的构造函数

    codegasmer展示了一种方法,可以识别哪些方法是负责的,您可以在堆栈跟踪中看到它,甚至可以揭示被称为异常的方法是在哪些方法中抛出的

    如果您可以简单地捕获异常并提供回退解决方案,那么您可以这样做(例如,通过在catch块中创建回退对象)。最好是找出异常的原始原因,然后尽可能避免它。在这里使用调试器非常有帮助。由于我不知道相关课程的任何细节,我无法在这里提供任何进一步的帮助

  2. # 2 楼答案

    使用try-catch。您使用的方法可能会引发一些异常,所以编译器要求您处理该异常

    public Player player(Colour colour, ScotlandYardView view, String mapFilename) {
    try{
        switch (typeMap.get(colour)) {
            case AI:
                return new RandomPlayer(view, mapFilename);
            case GUI:
                return gui(view);
            default:
                return new RandomPlayer(view, mapFilename);
        }
    }catch(Exception e){
    e.printStackTrace();
    }
    }