未报告的异常java.io.IOException的编译Java代码

问题描述:

当我遇到了这个代码的问题:未报告的异常java.io.IOException的编译Java代码

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;必须被发现或被宣布为 。

我不知道该怎么做。

更改您的主要方法声明:

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

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

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

你在你的main方法需要一个try-catch块围绕抛出IOException所有方法:

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

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