第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

異常消息如何超過已執(zhí)行的打印行

異常消息如何超過已執(zhí)行的打印行

qq_花開花謝_0 2022-05-21 16:36:17
我從用“;”分隔的 .csv 文件中讀取字段 分號。我寫了例外來處理可能的偏差。但如果出現(xiàn)異常,NetBeans 會在最后一行之前讀出錯誤消息。這是輸出的樣子:我不明白代碼中的后面一行怎么可能預先打印出來。這是我的整個代碼:public static void reader(String fileName) throws IOException {    try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {        String line;        List<String> lineHolder = new ArrayList<>();        StringTokenizer divider;        String formatter = "%2s|%-30s|%-30s|%10s|%n";        String separator = "----------";        System.out.format("ID|%-30s|%-30s|birth date|%n", "name", "email");        System.out.print("--+" + separator + separator + separator                 + "+" + separator + separator + separator + "+"                 + separator + "+\n");        while ((line = br.readLine()) != null){            if (line.startsWith("#", 0))                continue;            if (!line.contains(";")) {                throw new IOException("too less data or not proper delimiter");            }            divider = new StringTokenizer(line, ";");            lineHolder = arrayFiller(divider);            dataChecker(lineHolder, line);            System.out.format(formatter, lineHolder.get(0), lineHolder.get(1)                , lineHolder.get(2), lineHolder.get(3));        }    } catch (FileNotFoundException ex) {        System.err.println("The file not found.");    } catch (IOException ex){        System.err.println(ex.getMessage());    }    System.out.print("\n");}public static ArrayList<String> arrayFiller(StringTokenizer divider) {    ArrayList<String> lineHolder = new ArrayList<>();    while (divider.hasMoreTokens()) {        lineHolder.add(divider.nextToken());    }    return lineHolder;}
查看完整描述

2 回答

?
寶慕林4294392

TA貢獻2021條經(jīng)驗 獲得超8個贊

錯誤消息通過不同的輸出流打印。標準輸出流stdout用于正常記錄/輸出,錯誤(通過 System.err.println)轉(zhuǎn)到stderr. 您的控制臺/終端同時顯示兩者,但它們不會互相等待完成打印內(nèi)容。


編輯:也許這也有幫助。


EDIT2:如果您將錯誤更改為打印到文件,您將在控制臺/終端中丟失錯誤輸出。但也許這對你沒問題?像這樣:


//set err out to print to file

PrintStream ps = new PrintStream("err.log");

System.setErr(ps);


//cause exception for testing it

String s = null;

s.length();

如果您希望將錯誤和標準輸出都打印到控制臺/終端,則無法控制兩個流的時間,因為每個打印行都是獨立的操作。


查看完整回答
反對 回復 2022-05-21
?
一只名叫tom的貓

TA貢獻1906條經(jīng)驗 獲得超3個贊

  String separator = "----------";

    System.out.format("ID|%-30s|%-30s|birth date|%n", "name", "email");

    System.out.print("--+" + separator + separator + separator 

            + "+" + separator + separator + separator + "+" 

            + separator + "+\n");

    System.out.flush();

    while ((line = br.readLine()) != null)

由于 System.out 和 System.err 來自不同的輸出流,它們不會等待對方完成。在打印語句之后立即清除緩沖區(qū)內(nèi)存可以解決問題。



查看完整回答
反對 回復 2022-05-21
  • 2 回答
  • 0 關(guān)注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號