首页 > 解决方案 > 未处理的异常:java.io.IOException

问题描述

我在这里有我的代码块。它告诉我 IOException 未处理。

public static void main(String[] args) {
        FileWriter locFile = null;              
        try{                                  
            locFile = new FileWriter("locFile.txt");
            for(Location location : locations.values()){
                locFile.write(location.getLocationID()+", "+location.getDescription()+"\n");
            }
        }catch(IOException e){                     
            throw new IOException("My message");
            e.printStackTrace();
        }finally{
            try{
                if(locFile != null){
                    System.out.println("Attempting to close locFile");
                    locFile.close();
                }
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }

我认为我可以做的一种方法是这样的:

public static void main(String[] args) throws IOException{
   ...
}

但是我可以在 catch 块内抛出异常吗?这样做是否实用或普遍?

标签: javaexceptionioioexception

解决方案


如果您删除以下调用,throw那么您的代码对我来说运行良好

throw new IOException("My message");

如果您确实想重新抛出IOException,那么您需要将您的main()方法标记为抛出异常,例如

public static void main(String[] args) throws IOException

在某些情况下,您会想要做这样的事情。但更典型的是,我所看到/所做的是,如果一个方法抛出异常,您可能不会费心去捕获该方法中的任何内容。


推荐阅读