3 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
現(xiàn)在是時(shí)候修改 Java 中異常處理的概念了。
首先什么是異常,每當(dāng)在執(zhí)行代碼行時(shí)出現(xiàn)一些錯(cuò)誤或說(shuō)問(wèn)題,它被稱為異常。
例如,如果一個(gè)人將某物除以 0,那么它將給出一個(gè)異常,因?yàn)橛?jì)算機(jī)無(wú)法處理未定義的實(shí)體。
另一個(gè)例子是,當(dāng)您聲明了一個(gè) Scanner 以獲取整數(shù)輸入時(shí),但用戶輸入了一個(gè)字母,因此它也會(huì)導(dǎo)致異常。
這里我們進(jìn)行異常處理,這意味著我們將以不會(huì)導(dǎo)致程序關(guān)閉的方式處理異常,那些已經(jīng)包含在 try 和 catch 語(yǔ)句中的特定行將無(wú)法正常工作,但其他行將被執(zhí)行。
現(xiàn)在,如果我們創(chuàng)建了一個(gè)方法來(lái)做某事,讓我們假設(shè)打印一行,并且在打印該行時(shí)發(fā)生了異常,在這里我們可以做兩件事來(lái)處理異常發(fā)生的地方或拋出它。
如果我們?cè)谀莻€(gè)地方處理異常就可以了,如果我們拋出它,那么我們必須在調(diào)用該方法的地方捕獲它。
現(xiàn)在有兩種類型的異常 1)我們稱之為未檢查異常的運(yùn)行時(shí)異常 2)我們稱之為已檢查異常的編譯時(shí)異常
這兩種異常都可以在類級(jí)別和方法級(jí)別進(jìn)行處理,我們還可以做一件事鏈?zhǔn)疆惓L幚怼_@意味著一個(gè)類將向其他類拋出異常,依此類推。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
我認(rèn)為以下答案可以幫助您理解....
是否有更好的 throw 關(guān)鍵字實(shí)用性示例?
基本上Throw,Throws用于防止應(yīng)用程序因拋出異常而出錯(cuò)或崩潰。 Throws在方法簽名Throw中使用,用于防止流程出錯(cuò)。所以這里有一個(gè)簡(jiǎn)單的例子。
public class Test {
// here we have used "throws" in method signature
// because we are throwing new Exception(), if array is null
public static int getValue(int[] array, int index) throws Exception {
// here we are preventing application from getting
// unconditional error (NullPointer exception)
// if array is null, then we are throwing new Exception()
if(array == null) {
throw new Exception();
}
int value = array[index];
return value;
}
public static void main(String[] args) {
int[] array = null;
// here we are wrapping our getValue() function call to try catch block
// because getValue() function can throws Exception
// so we are making it safe to execute our program
try {
int value = getValue(array, 0);
System.out.println("value " + value);
} catch (Exception e) {
System.out.println("Provided array is null... so we caught the exception...");
}
}
}
如果您想更多地了解 throw 和 throws 的工作原理……那么您還需要了解異常處理(已檢查和未檢查)。
在給定的示例中,為什么用戶選擇拋出異常而不是簡(jiǎn)單地打印錯(cuò)誤?
根據(jù)給定的示例,您的函數(shù)目的是打招呼,但如果其他函數(shù)調(diào)用greet()為空值,則沒(méi)有任何理由打招呼 like Hello, null,因此他在執(zhí)行語(yǔ)句之前拋出異常。像...
void greet(String name) {
System.out.println("Hello, " + name);
}
String myName = null;
greet(myName); // it will print "Hello, null";

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
'Throw' 關(guān)鍵字用于通知調(diào)用者傳遞的參數(shù)無(wú)效(在這種情況下),或者通常在執(zhí)行調(diào)用者調(diào)用的代碼時(shí)出現(xiàn)問(wèn)題。
考慮一個(gè)您正在編寫(xiě)在線購(gòu)物應(yīng)用程序的示例。以下是簡(jiǎn)單的事件序列:
用戶滾動(dòng)項(xiàng)目并選擇一個(gè)或多個(gè)項(xiàng)目
物品被添加到購(gòu)物車中,用戶點(diǎn)擊結(jié)帳
用戶被重定向到第 3 方的付款頁(yè)面,他在其中輸入卡詳細(xì)信息并進(jìn)行付款
向用戶顯示成功頁(yè)面
現(xiàn)在,在付款過(guò)程中,如果卡號(hào)不正確或用戶卡中沒(méi)有足夠的余額,您是將錯(cuò)誤返回給調(diào)用者(即購(gòu)物應(yīng)用程序)還是將其記錄在控制臺(tái)(在支付提供商方面)并返回響應(yīng)?當(dāng)然是前者,所以這只是為了讓調(diào)用者知道存在錯(cuò)誤并且他應(yīng)該優(yōu)雅地處理它(在我們的例子中通過(guò)在結(jié)帳時(shí)顯示適當(dāng)?shù)南ⅲ?/p>
添加回答
舉報(bào)