我的代码中的例外 - Java

时间:2013-03-27 04:20:10

标签: java exception try-catch

我是Java编程的新手。我正在准备一项任务,我需要一些帮助我的代码。 说明说我需要在numberOfRows()convertFileArray()方法中处理异常。练习包括从csv文件读取,将文件转换为多维数组,在屏幕上打印数组。我的程序运行正常,我唯一的问题是我无法弄清楚我可以在这两种方法中处理哪些异常。

我写了一般的例外只是因为我不知道该怎么做。任何建议都会非常有帮助。另外我只发布我需要放置try-catch块的类。 提前谢谢。

这是我的代码:

import java.io.*;
import java.nio.file.*;
import java.util.StringTokenizer;

public class ReadFiles {
    int rows = 0;
    int columns = 0;
    String s = null;
    private String[][] arrayValues;
    Path filePath;

    public ReadFiles(String name) {

        filePath = Paths.get("C:\\stocks\\" + name);      //newMSFT.csv
        System.out.println("Path for file entered " + filePath.toString());

    }

    public boolean fileExists() {

        if(Files.exists(filePath))
            return true;

        else 
            return false;
    }

    public int numberOfRows() { 

        try {
            InputStream data = new BufferedInputStream(
              Files.newInputStream(filePath));
            BufferedReader reader = new BufferedReader(
              new InputStreamReader(data));
            s = reader.readLine();

            while(s != null) {
                rows++;
                s = reader.readLine();
            }    
        }

        catch(Exception e) {
            System.out.println("Message: " + e);
        }

        return rows;
    }

    public void convertFileArray() {

        try {
            InputStream data = new BufferedInputStream(
              Files.newInputStream(filePath));
            BufferedReader reader = new BufferedReader(
              new InputStreamReader(data));

            s = reader.readLine();   

            StringTokenizer z = new StringTokenizer(s, ",");
            columns = z.countTokens();

            arrayValues = new String[rows][columns];

            for(int x = 0; x < rows; x++) {
                z = new StringTokenizer(s, ",");

                //when there are still more tokens, place it in the array:
                int y = 0;
                while(z.hasMoreTokens()) {
                    arrayValues[x][y] = z.nextToken();
                    y++;
                }

                s = reader.readLine();
            }

            System.out.println("An array was created and has " +
              rows + " rows and " + columns + " columns.");
        } 

        catch(Exception e) {
            System.out.println("Message: " + e);
            e.printStackTrace();
        }
    }

    public void printArray() {  

        System.out.println("The data from the array is >> ");

        for(int a = 0; a < rows; a++) {
            String output = null;    

            for(int b = 0; b < columns; b++) {
                System.out.print(arrayValues[a][b] + "  ");

            }
            System.out.println();
        }
    }

    public String[][] getArrayValues() {
        return arrayValues;
    }

 }

3 个答案:

答案 0 :(得分:0)

你正在做的大部分事情都是投掷IOException的事情。

答案 1 :(得分:0)

如果您使用像eclipse这样的IDE,那么它会显示需要处理的异常。

在您的计划中,IOExceptionconvertFileArray()

中有一个numberOfRows()

答案 2 :(得分:0)

您的readLine方法会抛出IOException

try {
      s = reader.readLine();
    } catch (IOException e) {
      e.printStackTrace();
    }

并且Files.newInputStream(filePath)会抛出以下异常:

  • IllegalArgumentException - 如果指定了无效的选项组合
  • UnsupportedOperationException - 如果指定了不受支持的选项
  • IOException - 如果发生I / O错误
  • SecurityException - 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead方法来检查对该文件的读访问权。

所以它取决于你想要处理的异常和异常。