java - 如何更改此设置,使它无法实现我想要的方式?

标签 java file csv error-handling opencsv

我认为以下代码会在遇到任何错误(句号)时停止。

public static void exportDatapointsToCSV(List<Datapoint> datapointList, File exportDir) {

    SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy (h:mm a)", Locale.US);
    File file = new File(exportDir, "my_datapoints.csv");

    try {
        file.createNewFile();
        CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
        csvWrite.writeNext(new String[]{"DATAPOINT_LABEL", "VALUE", "TIMESTAMP", "TIMESTAMP_FORMATTED", "NOTE"});

        for (Datapoint datapoint : datapointList) {
            String arrStr[] = new String[]{
                    datapoint.getLabel(),
                    datapoint.getValue() + "",
                    datapoint.getTimestamp() + "",
                    sdf.format(new Date(datapoint.getTimestamp())) + "",
                    datapoint.getNote()
            };
            csvWrite.writeNext(arrStr);
        }
        csvWrite.close();
    }
    catch (Exception sqlEx) {
        Log.e(LOG_TAG, sqlEx.getMessage(), sqlEx);
    }
}

但我希望它:
  • 如果无法创建文件,则引发错误并停止。
  • 如果给定行遇到错误,请记录该错误,但移至下一行,而不要停止整个操作。

  • 我是否仅将try/catch移入循环?可以解决吗?

    最佳答案

    您正在捕获的异常是所有异常的祖父-如果查看javadocs,您会看到构造函数new FileWriter(file)抛出了IOException
    因此,如果您要采取某些措施,例如记录并退出(如果失败),然后尝试

     CSVWriter csvWrite = null;
     try {
             csvWrite = new CSVWriter(new FileWriter(file));
     } catch (IOException ex) {
        Log.e(LOG_TAG, ex.getMessage(), ex);
        return; // or System.exit or what either
     }
    

    关于java - 如何更改此设置,使它无法实现我想要的方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44402051/

    相关文章:

    java - 页面在 Wicket 中过期非常快

    java - 在 Java 中,什么时候应该使用 "Object o"而不是泛型?

    c - C语言读写二进制文件

    用于将 CSV 拆分为多个 block 的算法?是否可以在不逐行阅读的情况下拆分 CSV?

    Java读取西里尔语CSV文件,写入奇怪的字符

    java - Selenium webdriver 无法在 chrome headless 模式下定位元素

    java - 如何检测 URL 对象是否与 Collection 中的另一个 URL 对象指向相同的路径

    c++ - 在文本文件中搜索某个单词 C++

    c++ - 从内存缓冲区创建一个 fstream 对象

    java - 如何通过 CSVParser 处理大文件?