2016-05-04 61 views
-5
public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter file name:"); 
    String name = sc.nextLine(); 
    creatingfeatures(name, "part1"); 
} 

public static void creatingfeatures(String filename, String type) { 
    String outputFile = "../data/" + type + "/" + type + ".csv"; 
    System.out.println("This is the output file: " + outputFile); 
    try { 
     CsvWriter csvOutput = new CsvWriter(new FileWriter(outputFile, true), ','); 
     for (int i = 0; i < 10 ; i++) { 
      csvOutput.write(i); 
      csvOutput.endRecord(); 
     } 
     csvOutput.close(); 
    } 
    catch (IOException e) { 
     System.out.println("Please enter another file name (wrong name given)"); 
     System.exit(0); 
    } 
} 

大家好,當我使用一個無效的文件名(即沒有找到文件時),郵件下的郵件不打印。任何人都知道爲什麼?嘗試趕上,Java的eclipse沒有捕捉異常

+1

使用[嘗試 - 與資源(https://docs.oracle.com/javase/tutorial/essential /exceptions/tryResourceClose.html),而不是顯式地關閉'csvOutput'(但不是問題)。 –

+0

刪除代碼時請多加小心。額外的'}'肯定屬於一個被省略的塊,所以刪除它。不要像這樣殺死你的JVM。 – Tom

+2

Scumbag代碼:「輸入另一個文件名」<殺死程序>。 –

回答

4

documentation可以明顯看出,它並沒有給出提供給FileWriter的錯誤文件名的例外,而是如果它不存在則創建新文件。另外,如果它無法在所需位置創建文件,則會拋出IOException。只需檢查位置,它應該在那裏創建文件。

構造表示是否對寫入的數據附加給定一個文件名與一個布爾 一個FileWriter對象。

參數: fileName字符串系統相關的文件名。 如果爲true,則追加布爾值,那麼數據將被寫入文件的末尾而不是開頭。拋出: IOException如果指定文件存在,但它是一個目錄,而不是一個常規文件,不存在,但無法創建,或不能 打開任何其他原因

+1

@湯姆校正更正。 :) –

0

你只是捕獲IOExceptions

catch (IOException e) { 
    System.out.println("Please enter another file name (wrong name given)"); 
    System.exit(0); 
} 

如果你有其他類型的例外,你也必須趕上他們。 用途:

catch (Exception e) { 
    System.out.println("Other kind of exception"); 
    System.exit(0); 
} 

代替或補充捕捉任何一種異常的

catch (IOException e) { 
    System.out.println("Please enter another file name (wrong name given)"); 
    System.exit(0); 
}catch (Exception e) { 
    System.out.println("Other kind of exception"); 
    System.exit(0); 
}