Java之throw關鍵字的簡單介紹

2020-12-17 彼岸end

各位小夥伴們大家好,在之前的文章中小編介紹了異常的產生過程Java之異常產生過程解析,這次小編要介紹的是throw關鍵字,這個關鍵字可以在指定的方法中拋出指定的異常。

使用格式:throw new xxxException("異常產生的原因");

使用這個關鍵字,大家要注意以下幾點

throw關鍵字必須寫在方法的內部。throw關鍵字後邊new的對象必須是Exception或者Exception的子類對象。throw關鍵字拋出指定異常對象,我們就必須處理這個異常對象。

如果,throw關鍵字後邊創建的是RuntimeException或者RuntimeException的子類對象,我們可以不處理,默認交給JVM處理(列印異常對象,中斷程序)。

如果,throw關鍵字後邊創建的是編譯異常(寫代碼的時候報錯),我們就必須處理這個異常,要麼用throws,要麼用try...catch。

代碼如下:

public class Demo07Throw {

public static void main(String args[]){

String[] arr=null;

String e=getElement(arr,1);

System.out.println(e);

}

/*定義一個方法,獲取數組指定索引處的元素

參數:

String[] arr

int index

首先要對傳遞過來的參數進行合法性效驗,如果參數不合法,必須使用拋出異常的方式

,告知方法的調用者,傳遞的參數有問題*/

public static String getElement(String[] arr, int index){

/*對傳遞過來的參數數組進行合法性效驗

如果數組arr的值是null

那麼我們就拋出空指針異常,告知方法調用者「傳遞的數組值是null」*/

if(arr==null){

throw new NullPointerException("傳遞的數組值是null");

}

String ele=arr[index];

return ele;

}

}

運行結果:Exception in thread "main" java.lang.NullPointerException: 傳遞的數組值是null。

NullPointerException是運行期異常

對傳遞過來的參數index合法性也可以進行效驗,代碼如下

public class Demo08Throw {

public static void main(String args[]){

int[] arr=new int[]{1,2,3};

int e=getElement(arr,5);

System.out.println(e);

}

public static int getElement(int[] arr,int index){

/*對傳遞過來的參數index合法性的效驗,

如果超出了數組的範圍,就告知方法的調用者「傳遞的索引超出了數組的使用範圍」*/

if(index<0||index>arr.length-1){

throw new ArrayIndexOutOfBoundsException("傳遞的索引超出了數組的使用範圍");

}

int ele=arr[index];

return ele;

}

}

運行結果:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 傳遞的索引超出了數組的使用範圍(數組索引越界)。這也是運行期異常,不需要處理。

關於throw這關鍵字可以在指點的方法中拋出指定的異常,不過對於throw關鍵字來說,運行期的異常是不會處理的,只會拋出。小編就先說到這裡,希望這篇文章可以幫到大家,也歡迎各位小夥伴補充和糾錯。

圖片來自網絡,如有侵權,請聯繫作者刪除

相關焦點

  • Java之static關鍵字修飾成員方法
    各位小夥伴們大家好,這次小編要講的是Java當中,關鍵字static修飾成員方法的一些作用。關於成員方法,小編在之前的文章中有過介紹,大家可以去看java之類的定義和對象的創建及使用。在成員方法中一旦使用關鍵字static修飾,那麼就變成了靜態方法,靜態方法不屬於對象,屬於類。
  • java之Scanner類的簡單介紹
    各位小夥伴們大家好,這次小編要介紹的是Scanner,它可以實現從鍵盤輸入數據到程序中。Scanner是一個引用類型,接下來小編就簡單介紹引用類型通常情況下的使用步驟。另外,只有java.lang包下的內容不需要導包,其他的包都需要import語句。
  • Java之 Scanner類
    Java 語言定義了一些異常類在 java.lang 標準包中。標準運行時異常類的子類是最常見的異常類。由於 java.lang 包是默認加載到所有的 Java 程序的,所以大部分從運行時異常類繼承而來的異常都可以直接使用。2.3 捕獲異常使用 try 和 catch 關鍵字可以捕獲異常。try/catch 代碼塊放在異常可能發生的地方。
  • 深入分析Java中的關鍵字static
    在平時開發當中,我們經常會遇見static關鍵字。這篇文章就把java中static關鍵字的使用方法的原理進行一個深入的分析。先給出這篇文章的大致脈絡:首先,描述了static關鍵字去修飾java類、方法、變量、代碼塊的方法然後,從底層分析static關鍵字,接下來,給出static的一些使用場景和案例最後,對static進行一個總結,包括和普通變量的區分。
  • 你應該要理解的java並發關鍵字volatile
    提高java的並發編程,就不得不提volatile關鍵字,不管是在面試還是實際開發中 volatile都是一個應該掌握的技能。他的重要性不言而喻。因此也有必要學好。一、為什麼要用到volatile關鍵字?
  • java中的關鍵字transient,這篇文章你再也不發愁了
    這個關鍵字的作用其實我在寫java的序列化機制中曾經寫過,不過那時候只是簡單地認識,只要其簡單的用法,沒有深入的去分析。這篇文章就是去深入分析一下transient關鍵字。先給出這篇文章的大致脈絡首先,介紹了transient的基本概念和基本用法、然後,介紹深入分析一下transient關鍵字,並介紹幾個需要掌握的問題最後,來個總結一、初識transient關鍵字其實這個關鍵字的作用很好理解,就是簡單的一句話:將不需要序列化的屬性前添加關鍵字transient,序列化對象的時候,這個屬性就不會被序列化。
  • Java異常面試問題
    Java中的異常處理關鍵字是什麼?java異常處理中使用了四個關鍵字。throw:有時我們明確要創建異常對象然後拋出它來停止程序的正常處理。throw關鍵字用於向運行時拋出異常來處理它。Java中throw和throws關鍵字有什麼區別?throws關鍵字與方法籤名一起用於聲明方法可能拋出的異常,而throw關鍵字用於破壞程序流並將異常對象移交給運行時來處理它。如何在Java中編寫自定義異常?
  • Java編程的五個基本語法及關鍵字列表
    當保存文件的時候,你應該使用類名作為文件名保存(切記Java是大小寫敏感的),文件名的後綴為.java。(如果文件名和類名不相同則會導致編譯錯誤)。5.主方法入口:所有的Java程序由public static void main(String[] args)方法開始執行。
  • 每日一課 | Java Static關鍵字示例
    static關鍵字可確保在內存中僅創建一個相關方法,對象或變量的實例。當需要一個類級別的變量來管理某些屬性值時,以及需要一個類級別的方法來執行某些操作時,都可以使用它。下面每個內容中都會詳細討論static關鍵字的使用。1. STATIC關鍵字作為變量修飾符當將static關鍵字用於變量時,它指示每個類僅應實例化一個變量。
  • Java之抽象方法的使用與及接口中抽象方法的簡單介紹
    各位小夥伴們大家好,這次小編要介紹的是Java當中的接口,什麼是接口呢?接口就是多個類的公共規範,是一中引用數據類型,最重要的內容就是其中的抽象方法。public interface 接口名稱{//接口內容}備註:換成關鍵字interface之後,編譯生成的字節碼文件仍然是:.java-->.class接口中包含的內容有
  • 1分鐘讀懂java中的volatile關鍵字
    本文將以儘量簡潔的方式介紹java中的volatile關鍵字。如果覺得寫的不錯,記得,如果寫的不好歡迎批評指正,讓我們一起進步!1.volatile簡介先來看volatile這個單詞的本義:說簡單點,volatile就是表示某人或某物是不穩定的、易變的。
  • 深入理解Java關鍵字null
    ===Tips: 點擊上方 藍字 關注,分類速查更多信息===一、null代表不確定的對象 Java中null是一個關鍵字 二、null本身不是對象,也不是Objcet的實例 null本身雖然能代表一個不確定的對象,但就null本身來說,它不是對象,也不確定類型,也不是java.lang.Object
  • 每日一課 | Java Final關鍵字示例
    Java中的Final關鍵字是一個修飾符,用於限制用戶執行不需要的代碼或防止代碼或值被更改。可以在3個上下文中使用此關鍵字。
  • Java之線程池的簡單介紹
    各位小夥伴們大家好,這次小編要簡單介紹一下Java中的線程池。在之前小編介紹線程的時候,如果我們使用線程的時候,就可以去創建一個線程,那樣實現起來就非常簡單,但是如果並發地線程數量很多,並且每一個線程都是執行一個時間很短的任務就結束了,這樣頻繁創建線程就會大大降低系統的效率,頻繁創建和銷毀線程需要時間。
  • Java之this關鍵字的用法
    給位小夥伴們大家好,在之前的文章中,小編有講過super關鍵字的用法Java之super關鍵字的用法。這次小編要介紹的是在Java當中this關鍵字的用法。mengNiu.showPrice();//19.9(局部變量) 19(本類中的成員變量) 20.99(父類中的成員變量)System.out.println(new MengNiu());//lqlqlqlq 啦啦啦 we(局部變量)}}關於this關鍵字的作用還有用法
  • 面試題之java基礎
    應部分網友的建議,從今天起會逐步的總結一些java、php相關的面試題,由簡單到複雜歸納一個系列:【金三銀四】,中間部分題目的答案來源於網絡,如若不嚴謹還望諒解。java基礎面試題 1、簡述Java程序編譯和運行的過程:答:①  Java編譯程序將Java源程序翻譯為JVM可執行代碼--字節碼,創建完源文件之後,程序會先被編譯成 「.class」 文件。
  • Java內存模型與volatile關鍵字
    Java的內存模型大概樣子還是有必要了解下的,今天就學習了下,順便學習了一點volatile關鍵字!關鍵字volatile一個變量如果被volatile修飾那麼他有兩個特性:1、變量對所有線程的可見性,意思是如果一條線程修改了這個變量的值,那麼其他線程就可以立刻知道的。
  • Java基礎之Socket篇
    SmileThe Royal Concept - SmileJava基礎之Socket篇Hello,大家好!我是老醜,今天分享的是一些關於Socket的知識。本文閱讀預計15分鐘左右。目錄-什麼是Socket?
  • 簡單的面試題目,大跌眼鏡的結果(JAVA)
    以下是一個簡單統計,樣本幾百人不等,能夠全部答上來的,不超過10%。哦,全錯的也有!快來看看我這b裝的分數高,還是你得的分數高,滿分10分!1-3年 初級java基礎1、線程安全的Map是什麼(推薦答案是ConcurrentHashMap,如果實在不知道答Hashtable也可以。
  • Java之Runnable表達式的簡單介紹
    各位小夥伴們大家好,這次小編要介紹的是Runnable表達式當我們要啟動一個線程去完成任務的時候,通常的做法會通過java.lang.Runnable接口來定義任務內容,並使用java.lang.Thread類來啟動線程,代碼如下:/*創建Runnable接口的實現類,重寫run方法,設置線程任務*/public class RunnableImpl