自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

教妹學 Java :Throw 和 Throws

開發(fā) 后端
“throw 關鍵字,用于主動地拋出異常;正常情況下,當除數(shù)為 0 的時候,程序會主動拋出 ArithmeticException;但如果我們想要除數(shù)為 1 的時候也拋出 ArithmeticException,就可以使用 throw 關鍵字主動地拋出異常?!蔽艺f。

[[410259]]

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

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

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

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

舉個例子。

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

這段代碼在運行的時候就會拋出以下錯誤:

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

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

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

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

“假設現(xiàn)在有這么一個方法 myMethod(),可能會出現(xiàn) ArithmeticException 異常,也可能會出現(xiàn) NullPointerException。這種情況下,可以使用 try-catch 來處理。”我回答。

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

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

“一個解決辦法就是,使用 throws 關鍵字,在方法簽名上聲明可能會拋出的異常,然后在調(diào)用該方法的地方使用 try-catch 進行處理。”

  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.     // 方法簽名上聲明異常 

“好了,我來總結(jié)下 throw 和 throws 的區(qū)別,三妹,你記一下。”

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

2)throws 關鍵字后面跟的是異常的名字;而 throw 關鍵字后面跟的是異常的對象。

示例。

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

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

4)throws 關鍵字在聲明異常的時候可以跟多個,用逗號隔開;而 throw 關鍵字每次只能拋出一個異常。

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

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

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

 

責任編輯:武曉燕 來源: 沉默王二
相關推薦

2021-06-06 20:56:48

Java內(nèi)存 intern

2021-05-10 11:38:07

Java數(shù)組IDEA

2020-10-26 09:36:45

Java變量數(shù)據(jù)

2020-11-18 09:44:49

Java命名約定

2021-06-11 18:08:00

Java字符串拼接

2021-07-03 17:53:52

Java異常處理機制

2021-07-26 17:22:02

Java

2020-10-29 10:28:31

Java數(shù)據(jù)類型

2021-07-30 09:32:55

JavaEquals

2020-11-13 10:29:37

流程控制語句

2020-12-09 05:19:35

static關鍵字Java

2022-02-16 08:26:18

Go并發(fā)信號量

2018-03-06 10:46:42

代碼Python買水果

2020-11-20 09:36:43

Java對象

2017-06-02 10:25:26

Java異常處理

2015-03-16 16:16:15

JavaJava異常處理Java最佳實踐

2016-05-12 09:59:08

2010-09-13 13:25:44

sql server外

2011-09-16 11:08:54

Emacstwitter微博

2013-06-27 09:42:47

編程新手
點贊
收藏

51CTO技術(shù)棧公眾號