java - 方法返回类型混淆

use*_*ju7 1 java return

我正试图从函数返回一个2D矩阵.Eclipse抱怨函数的返回类型

import java.io.*;
import java.util.Arrays;
import java.util.List;
import com.opencsv.CSVReader;

public class myClass {

    private static String inFile = "myfile.csv";

    private String[][] readCsv() {
        File file1 = new File(inFile);
        if (file1.exists()) {
            System.out.println("File " + inFile + " exists. length : " + inFile.length());
        } else {
            System.out.println("File " + inFile + " does not exist!");
        }

        try {
            // Read all
            CSVReader csvReader = new CSVReader(new FileReader(new File(inFile)));
            List<String[]> list = csvReader.readAll();

            // Convert to 2D array
            String[][] dataArr = new String[list.size()][];
            dataArr = list.toArray(dataArr);

            return dataArr;
        } catch (Exception ex) {
            // Do something with mistake or ignore
            ex.printStackTrace();
        }
    }

    public static void main(String[] args) {
        myClass mc = new myClass();
        String[][] csvContents = mc.readCsv();

        for (int k = 0; k < 10; k++) {
            System.out.println(Arrays.toString(csvContents[k]));
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

日食错误告诉我的是This method must return a result of type String[][].返回的值dataArr是类型String[][]&readCsv指示返回的方法String[][].

我无法弄清楚错误在哪里.

Mar*_*arv 5

如果try块抛出异常,你将不得不返回一些东西:

public String[][] myMethod() {
    String[][] arr = new String[1][];
    try {
        arr = methodThatCanThrowException(); // If this method throws an exception
        return arr;                          // this return will not execute
    } catch (Exception ignored) {}

    return arr;                              // Return something after the try/catch block
}
Run Code Online (Sandbox Code Playgroud)

你如何处理这个取决于你,你可以返回一些默认值或者也许null.