throw和throws的區(qū)別是啥,各自有什么用處?。?/h1>
這是自己寫的這個模擬借書軟件的代碼? 希望可以幫到大家

這是自己寫的這個模擬借書軟件的代碼? 希望可以幫到大家
這是自己寫的這個模擬借書軟件的代碼? 希望可以幫到大家
2018-05-28
if (scanner.hasNextInt()) {
int id = scanner.nextInt();
if (id>ss.length) {
System.out.println("您輸入的書號有誤,請重新輸入");
}else{
System.out.println("尋找完畢:《"+ss[id-1]+"》的書號是"+id);
}
}else{
boolean b = false;
String name = scanner.next();
for(int i = 1;i<=ss.length; i++){
if (ss[i-1].equals(name)) {
System.out.println("尋找完畢:《"+ss[i-1]+"》的書號是"+(i));
b = true;
break;
}
}
if(!b) {
System.out.println("找不到這本書,請重新輸入書名");
}
}
?問個問題。 你拿name 和數(shù)組里面的名字比較時? 為什么是 i=1開始.? 而且還是SS[i+1]?
throws用于聲明方法中可能拋出的異常?
example:public static void main(String[]? args) throws Exception
throw用于拋出一個具體的異常類對象,可以單獨作為語句使用
如果throw語句拋出的異常是Checked異常,則該throw語句要么處于try塊處理,顯式捕獲該異常,要么放在一個帶throws聲明拋出的方法中(將該異常交給該方法的調(diào)用者處理)
如果throw語句拋出的是Runtime異常,則該語句可以不用放在try塊中,也不用放在帶throws聲明拋出的方法中,程序可以使用try。。catch來捕獲處理異常,也可以不用理會該異常,把該異常交給該方法的調(diào)用者處理
example:?
public class ThrowExamp
{? ? ??
????????public static void main(String[] args)
????????{
????????????????try
????????????????{? ? ? ?
????????????????????????throwChecked(-3);??
??????????????????}
?????????????????catch(Exception e)
?????????????????{
?????????????????????????System.out.println(e.getMessage());
????????????? ? ? }
??????????????????throwRuntime(3);
}
public static void throwChecked(int a) throws Exception
{????????
????????????if(a>0)
????????????{
????????????????????//自行拋出Exception異常,必須處于try塊中,或帶throws聲明的方法中
????????????????????throw new Exeption("a 不合法");
????????????}
}
public static void throwRuntime(int a)
{????
????????????if(a>0)
????????????{
????????????????????//自行拋出Runtime異常,既可以顯示捕獲該異常,也可以不用理會該異常,交給方法調(diào)用者處理
????????????????????throw new RuntimeException("a不合法");
????????????}
舉報
2018-05-30
throw是拋出一個異常類的對象(是一個實例),throws拋出異常類
在Java中,把程序的業(yè)務(wù)實現(xiàn)代碼放在try塊中定義,所有的異常處理邏輯放在catch塊中完成。如果執(zhí)行try塊中的代碼出現(xiàn)異常,系統(tǒng)就會自動生成一個異常對象,該異常對象被提交給Java運行時環(huán)境,這個過程被稱為拋出異常。當(dāng)Java運行時環(huán)境收到異常對象時,會尋找能處理該異常對象的catch塊,如果找到合適的catch塊,則將該異常對象交給該catch塊處理,這個過程稱為捕獲異常,如果Java運行時環(huán)境找不到捕獲異常的catch,就會傳給該方法的調(diào)用者。如,main方法調(diào)用A方法,A方法調(diào)用B方法,B方法調(diào)用C方法。。。。,如果在C方法中發(fā)生異常,只要拋出了異常沒有被捕獲,或者捕獲異常處理后又重新拋出了異常,那么異常就會傳給該方法的調(diào)用者(B方法),B方法又傳給A方法,A方法傳給main方法,如果main方法依然沒有處理該異常,JVM會終止該程序,并打印異常的跟蹤棧信息
如果拋出IndexOutBoundsException異常,你可以打印一句話“數(shù)組越界”,也可以打印異常跟蹤棧信息,同樣,如果拋出NumberFormatException異常,你也可以打印“數(shù)字格式異?!保部梢源蛴‘惓8櫁P畔?,看你如何處理