日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
教妹學(xué) Java :Throw 和 Throws

 “二哥,你能告訴我 throw 和 throws 兩個(gè)關(guān)鍵字的區(qū)別嗎?”三妹問(wèn)。

創(chuàng)新互聯(lián)建站專注于承德企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站制作。承德網(wǎng)站建設(shè)公司,為承德等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

“throw 關(guān)鍵字,用于主動(dòng)地拋出異常;正常情況下,當(dāng)除數(shù)為 0 的時(shí)候,程序會(huì)主動(dòng)拋出 ArithmeticException;但如果我們想要除數(shù)為 1 的時(shí)候也拋出 ArithmeticException,就可以使用 throw 關(guān)鍵字主動(dòng)地拋出異常。”我說(shuō)。

 
 
 
 
  1. throw new exception_class("error message"); 

語(yǔ)法也非常簡(jiǎn)單,throw 關(guān)鍵字后跟上 new 關(guān)鍵字,以及異常的類型還有參數(shù)即可。

舉個(gè)例子。

 
 
 
 
  1. public class ThrowDemo { 
  2.     static void checkEligibilty(int stuage){ 
  3.         if(stuage<18) { 
  4.             throw new ArithmeticException("年紀(jì)未滿 18 歲,禁止觀影"); 
  5.         } else { 
  6.             System.out.println("請(qǐng)認(rèn)真觀影!!"); 
  7.         } 
  8.     } 
  9.  
  10.     public static void main(String args[]){ 
  11.         checkEligibilty(10); 
  12.         System.out.println("愉快地周末.."); 
  13.     } 

這段代碼在運(yùn)行的時(shí)候就會(huì)拋出以下錯(cuò)誤:

 
 
 
 
  1. Exception in thread "main" java.lang.ArithmeticException: 年紀(jì)未滿 18 歲,禁止觀影 
  2.  at com.itwanger.s43.ThrowDemo.checkEligibilty(ThrowDemo.java:9) 
  3.  at com.itwanger.s43.ThrowDemo.main(ThrowDemo.java:16) 

“throws 關(guān)鍵字的作用就和 throw 完全不同。”我說(shuō),“異常處理機(jī)制這小節(jié)中講了 checked exception 和 unchecked exception,也就是檢查型異常和非檢查型異常;對(duì)于檢查型異常來(lái)說(shuō),如果你沒(méi)有做處理,編譯器就會(huì)提示你。”

Class.forName() 方法在執(zhí)行的時(shí)候可能會(huì)遇到 java.lang.ClassNotFoundException 異常,一個(gè)檢查型異常,如果沒(méi)有做處理,IDEA 就會(huì)提示你,要么在方法簽名上聲明,要么放在 try-catch 中。

“那什么情況下使用 throws 而不是 try-catch 呢?”三妹問(wèn)。

“假設(shè)現(xiàn)在有這么一個(gè)方法 myMethod(),可能會(huì)出現(xiàn) ArithmeticException 異常,也可能會(huì)出現(xiàn) NullPointerException。這種情況下,可以使用 try-catch 來(lái)處理?!蔽一卮?。

 
 
 
 
  1. public void myMethod() { 
  2.     try { 
  3.         // 可能拋出異常  
  4.     } catch (ArithmeticException e) { 
  5.         // 算術(shù)異常 
  6.     } catch (NullPointerException e) { 
  7.         // 空指針異常 
  8.     } 

“但假設(shè)有好幾個(gè)類似 myMethod() 的方法,如果為每個(gè)方法都加上 try-catch,就會(huì)顯得非常繁瑣。代碼就會(huì)變得又臭又長(zhǎng),可讀性就差了。”我繼續(xù)說(shuō)。

“一個(gè)解決辦法就是,使用 throws 關(guān)鍵字,在方法簽名上聲明可能會(huì)拋出的異常,然后在調(diào)用該方法的地方使用 try-catch 進(jìn)行處理?!?/p>

 
 
 
 
  1. public static void main(String args[]){ 
  2.     try { 
  3.         myMethod1(); 
  4.     } catch (ArithmeticException e) { 
  5.         // 算術(shù)異常 
  6.     } catch (NullPointerException e) { 
  7.         // 空指針異常 
  8.     } 
  9. public static void myMethod1() throws ArithmeticException, NullPointerException{ 
  10.     // 方法簽名上聲明異常 

“好了,我來(lái)總結(jié)下 throw 和 throws 的區(qū)別,三妹,你記一下?!?/p>

1)throws 關(guān)鍵字用于聲明異常,它的作用和 try-catch 相似;而 throw 關(guān)鍵字用于顯式的拋出異常。

2)throws 關(guān)鍵字后面跟的是異常的名字;而 throw 關(guān)鍵字后面跟的是異常的對(duì)象。

示例。

 
 
 
 
  1. throws ArithmeticException; 
 
 
 
 
  1. throw new ArithmeticException("算術(shù)異常"); 

3)throws 關(guān)鍵字出現(xiàn)在方法簽名上,而 throw 關(guān)鍵字出現(xiàn)在方法體里。

4)throws 關(guān)鍵字在聲明異常的時(shí)候可以跟多個(gè),用逗號(hào)隔開;而 throw 關(guān)鍵字每次只能拋出一個(gè)異常。

“三妹,這下子清楚了吧?”我抬抬頭,看了看三妹說(shuō)。

“好的,二哥,這下徹底記住了,你真棒!”

本文轉(zhuǎn)載自微信公眾號(hào)「沉默王二」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系沉默王二公眾號(hào)。


分享標(biāo)題:教妹學(xué) Java :Throw 和 Throws
URL分享:http://m.5511xx.com/article/cdohhso.html