網(wǎng)站建設(shè)客戶常問到的問題網(wǎng)站制作流程和方法
往期回顧:
- 【前端學(xué)java】JAVA開發(fā)的依賴安裝與環(huán)境配置 (0)
- 【前端學(xué)java】java的基礎(chǔ)語法(1)
- 【前端學(xué)java】JAVA中的packge與import(2)
- 【前端學(xué)java】面向?qū)ο缶幊袒A(chǔ)-類的使用 (3)
- 【前端學(xué)java】類中的訪問權(quán)限詳解,通俗易懂(4)
- 【前端學(xué)java】java中final修飾符(5)
- 【前端學(xué)java】全網(wǎng)最通俗易懂的JAVA抽象概念(6)
- 【前端學(xué)java】Java中的接口和枚舉概念(7)
- 【前端學(xué)java】java中的Object類(8)
- 【前端學(xué)java】java 中的數(shù)組(9)
- 【前端學(xué)java】java中的字符串操作(10)
- 【前端學(xué)java】java中的包裝類(11)
- 【前端學(xué)java】java中的日期操作(12)
- 【前端學(xué)java】語法練習(xí)-工具類的封裝(13)
- 【前端學(xué)java】復(fù)習(xí)鞏固-Java中的對象比較(14)
常見的錯誤類型
編譯時(shí)錯誤
這類錯誤在代碼編寫階段產(chǎn)生,主要包括語法錯誤、類型錯誤、變量未聲明等。這類錯誤在程序編譯時(shí)就會被檢測出來,如下面代碼的類型轉(zhuǎn)換錯誤
錯誤(Errors)
通常是Java虛擬機(jī)無法恢復(fù)的嚴(yán)重問題,如OutOfMemoryError、StackOverflowError等。如下圖遞歸沒有跳出邏輯導(dǎo)致的StackOverflowError報(bào)錯
異常
運(yùn)行時(shí)異常RuntimeException
這是未經(jīng)檢查的異常,Java編譯器不會強(qiáng)制要求程序員處理這些異常(運(yùn)行代碼時(shí)才會出現(xiàn)異常提示)。
在上面的例子中,我們創(chuàng)建了一個包含3個元素的整數(shù)數(shù)組,然后嘗試訪問數(shù)組的第4個元素。由于數(shù)組長度只有3,所以這會拋出一個ArrayIndexOutOfBoundsException運(yùn)行時(shí)異常。
檢查型異常Checked Exceptions
這是受檢查的異常,Java編譯器會強(qiáng)制要求程序員處理這些異常。
在上面的代碼中,我們嘗試打開一個名為"example.txt"的文件并讀取它。由于這個文件可能不存在或無法讀取,因此new FileReader報(bào)錯,程序無法執(zhí)行。
這個時(shí)候需要通過try catch捕獲異常,和前端一樣
異常處理的基本語法
前端中的異常處理方法
前端中異常處理基本上使用try-catch 語句就夠了,Promise 鏈?zhǔn)秸{(diào)用中使用.catch 方法也可以捕獲異常,這兩種是常用的,都很簡單。
后端中的異常處理方法
Java中的異常處理語法主要包括try-catch語句和throw語句。
try-catch語句
public static void main(String[] args) { try { String str = "Hello World"; int length = Integer.parseInt(str); // 傳遞了一個字符串類型的參數(shù),應(yīng)該使用String.length()方法獲取長度 } catch (NumberFormatException e) { // 如果傳遞的參數(shù)不是一個有效的整數(shù),則會拋出NumberFormatException異常 } catch (IllegalArgumentException e) { // 如果傳遞了一個不合法或不適當(dāng)?shù)膮?shù),則會拋出IllegalArgumentException異常 } finally { // 無論是否發(fā)生異常,都將執(zhí)行的代碼塊 }
}
注:這里我們只做簡單的語法使用展示,具體catch中的錯誤類型我們不必糾結(jié)深入學(xué)習(xí),遇到具體的問題時(shí)鞏固學(xué)習(xí)即可。
throw語句
throw語句用于手動拋出異常。當(dāng)程序遇到一個異常條件時(shí),可以使用throw語句拋出一個異常對象。
public class Main { public static void main(String[] args) { int[] numbers = {2, 4, 6, 8}; // 遍歷數(shù)組并查找元素 for (int i = 0; i < numbers.length; i++) { if (numbers[i] == 5) { // 手動拋出異常 throw new IllegalArgumentException("數(shù)組中不存在元素 5"); } } }
}
自定義異常
在Java中,我們可以創(chuàng)建自定義異常,自定義異常通常從Exception或其子類派生(簡單了解即可)。
// 定義一個新的異常類,繼承自Exception類
public class MyException extends Exception { public MyException() { super(); } public MyException(String message) { super(message); } public MyException(String message, Throwable cause) { super(message, cause); } public MyException(Throwable cause) { super(cause); }
}
現(xiàn)在,我們可以在代碼中拋出這個新的異常:
public class Test { public static void main(String[] args) { try { // 在這里拋出我們的自定義異常 throw new MyException("這是我的異常"); } catch (MyException e) { e.printStackTrace(); } }
}