我有一個關于處理用戶所犯錯誤的代碼的問題。
因此,我需要我的用戶添加一個程式的名稱,添加該程式在RAM中占用的記憶體,并添加他將打開該程式的時間。
我需要在我的代碼中添加防御性編程,所以我想也許我可以通過檢查用戶是否真的添加了程式所需的變數型別,或者是否沒有添加。
無論如何,我都對如何使用 try 和 catch 塊感到困惑,目前我的情況是這樣的。
System.out.println("add program Id")。
String programID = scan.next() 。
try{
字串檢查。
check = programID;
}catch(Exception e){
System.out.println("添加一個字串型別的值")。
}
uj5u.com熱心網友回復:
這并不奏效。
你能輸入的任何東西都是一個字串。我可以輸入'5'。那是一個字串。你可能認為它是一個數字,但這整個文本塊是一個字串,而'5'就在其中。
沒有文本是字串。
沒有文本也是一個字串。String x = "";編譯正常。
因此,這里不會出現任何例外,而且也不清楚你想檢測的是什么情況。
也許一個程式ID的形式是。"一個大寫字母(而且只能是英文大寫字母,例如不是ü),然后是最多三個不同的數字"。例如,'Z5'或'Y495'.
。你需要寫代碼來檢測這個,不需要try/catch。例如,正則運算式:
private static final Pattern PROGRAM_ID_PATTERN = Pattern. compile("^[A-Z]d{1,3}$") 。
public static void main(String[] args) {
....
String programId。
do {
programId = scanner.next();
if (!PROGRAM_ID_PATTERN.matcher(programId).matches() ) {
System.err.println("輸入一個有效的程式ID,例如A123")。
} else {
break;
}
} while (true);
}
當一個方法有多種不同的退出方式時,就會出現例外。
。例如,設想這個方法:
byte[] contentsOfFile = Files.readFileFully("myfile.txt") 。
readFileFully方法看似簡單。你提供一個檔案的名字,然后它回傳一個包含檔案內容的位元組陣列。
然而,這只是一種可能的方式。如果該檔案不存在怎么辦?如果檔案存在,但你的行程沒有讀取權限怎么辦?如果磁盤發生故障或它是一個可移動的驅動器,而它在讀取檔案的程序中被抽走了呢?
這些有點可預測的潛在替代出路一般是由例外來完成的。這種方法就是拋出FileNotFoundException、noReadAccessException,以及更普遍的IOException,例如。
scanner.next()沒有 "那不是一個字串 "的變體
有一個scanner.next(Pattern),你可以使用:
private static final Pattern PROGRAM_ID_PATTERN = Pattern. compile("^[A-Z]d{1,3}$") 。
public static void main(String[] args) {
....
String programId。
do {
try {
programId = scanner.next(PROGRAM_ID_PATTERN);
break;
} catch (NoSuchElementException e) {
System.err.println("輸入一個有效的程式ID,例如A123")。
}
} while (true);
}
javadoc通常會解釋可能出現的例外;如果一個方法沒有提到任何例外,你就不應該在那里嘗試/捕捉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/312760.html
標籤:
上一篇:無法訪問物件陣列中的特定資料
