【问题标题】:Unreported exception java.io.IOException when compiling Java code编译 Java 代码时出现未报告的异常 java.io.IOException
【发布时间】:2014-11-24 22:40:51
【问题描述】:

我遇到了这个代码的问题:

public class gravityv1 {
    public static double[] calculategravity(double[] mass, int[] diameter) {
        double[] gravity = new double[mass.length];

        for (int n = 0; n < mass.length; n++) {
            gravity[n] = (6.67E-11 * mass[n]) / Math.pow((diameter[n] / 2), 2);

        }

        return gravity;
    }

    public static void print(double[] gravity, double[] mass, int[] diameter, String[] planet) {
        System.out.println("                          Planetary Data");
        System.out.println("Planet          Diameter(km)          Mass(kg)          g(m/s^2)");
        System.out.println("---------------------------------------------------------------------");
        for (int n = 0; n < planet.length; n++)
        System.out.printf("%-7s%15d%20.3f%14.2f", planet[n], diameter[n], mass[n], gravity[n]);
    }

    public static void printFile(double[] gravity) throws IOException {
        PrintWriter outFile = new PrintWriter(new File("gravity.txt"));
        for (double gravita: gravity) {
            outFile.println(gravita);
        }
        outFile.close();
    }

    public static void main(String[] args) {
        String[] planet = {
            "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"
        };
        double[] mass = {.330E24, 4.87E24, 5.97E24, 0.642E24, 1898E24, 568E24, 86.8E24, 102E24
        };
        int[] diameter = {
            4879, 12104, 12756, 6792, 142984, 120536, 51118, 49528
        };

        double[] gravity = calculategravity(mass, diameter);

        print(gravity, mass, diameter, planet);
        printFile(gravity);
    }
}

每当我尝试编译此代码时,位于底部的“printFile(gravity)”会出现错误。错误信息是:

未报告的异常 java.io.IOException;必须被抓住或宣布 被扔掉。

我不知道该怎么办。

【问题讨论】:

    标签: java exception-handling ioexception


    【解决方案1】:

    您需要在 main 方法中围绕所有抛出 IOException 的方法使用 try-catch 块:

    try {
        printFile(gravity);
    } catch (IOException ex) {
        // handle exception here
    }
    

    包括签名后有throws IOException的所有方法。

    【讨论】:

      【解决方案2】:

      将您的主要方法声明更改为:

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

      在Java中,每个方法A调用另一个方法B,必须声明所有异常
      B 可以抛出哪个(除非它们是 RuntimeException 的后代或除非 A
      在 try-catch 块中显式地捕获和处理它们)。

      在你的情况下,A 是 main,B 是 printFile

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-11
        相关资源
        最近更新 更多