java中throw是什么,怎么使用呢?不知道的小伙伴來看看小編今天的分享吧!
1、throw簡介:
程序出現錯誤后,系統會自動拋出異常;此外,Java 也允許程序自行拋出異常,自行拋出異常使用throw語句來完成。
2、異常處理:
程序運行過程中可能會出現異常情況,比如被0除、對負數計算平方根等,還有可能會出現致命的錯誤,比如內存不足,磁盤損壞無法讀取文件等,對于異常和錯誤情況的處理,統稱為異常處理。
3、Java異常處理:
ava異常處理主要通過5個關鍵字控制,分別是try、catch、throw、throws和finally。try的意思是試試它所包含的代碼段中是否會發生異常;而catch當有異常時抓住它,并進行相應的處理,使程序不受異常的影響而繼續執行下去;throw是在程序中明確引發異常;throws的作用是如果一個方法可以引發異常,而它本身并不對該異常處理,那么它必須將這個異常拋給調用它的方法;finally是無論發不發生異常都要被執行的代碼
4、關鍵字:throw,throws,try和catch的用法如下:
throws出現在方法的聲明中,表示該方法可能會拋出的異常,允許throws后面跟著多個異常類型
throw出現在方法體中,用于拋出異常。當方法在執行過程中遇到異常情況時,將異常信息封裝為異常對象,然后throw。
try出現在方法體中,它自身是一個代碼塊,表示嘗試執行代碼塊的語句。如果在執行過程中有某條語句拋出異常,那么代碼塊后面的語句將不被執行。
catch出現在try代碼塊的后面,自身也是一個代碼塊,用于捕獲異常try代碼塊中可能拋出的異常。catch關鍵字后面緊接著它能捕獲的異常類型,所有異常類型的子類異常也能被捕獲。
舉例:
package book.exception;
/** */ /**
* 拋出異常和聲明異常
* @author joe
*
*/
public class ThrowAndThrows ... {
/** *//**
* 計算一個數字的平方根
* @param nStr 以字符串的形式提供數字
* @return 返回平方根
* @throws Exception 當用戶輸入的字符串為空,
* 或者字符串無法轉換成數字,或者轉換成的數字小于0,都會拋出異常
*/
public static double sqrt(String nStr) throws Exception ...{
if (nStr == null) ...{
//用trow關鍵字拋出異常,當異常被拋出時,程序會跳出該方法
throw new Exception("輸入的字符不能為空!");
}
double n = 0;
try ...{
n = Double.parseDouble(nStr);
} catch(NumberFormatException e) ...{
//將parseDouble方法可能拋出的異常NumberFormatException捕獲,
//然后將捕獲的異常重新封裝并輸出
throw new Exception("輸入的字符串必須能夠轉化成數字!", e);
}
if (n < 0 )...{
throw new Exception("輸入的字符串轉化成的數字必須大于0!");
}
return Math.sqrt(n);
}
public static void main(String[] args) throws Exception ...{
try...{
ThrowAndThrows.sqrt("-124.56");
} catch(Exception e) ...{
//將sqrt方法聲明的可能拋出的Exception異常捕獲
//打印捕獲的異常的堆棧信息,從堆棧信息中可以發現異常發生的位置和原因
System.out.println("Got a Exception:" + e.getMessage());
e.printStackTrace();
throw e; //不做進一步處理,將異常向外拋出
}
//將sqrt聲明了可能會拋出的異常向外拋出,必須在方法聲明中使用throws
ThrowAndThrows.sqrt("-124.56");
}
}
程序輸出結果:
Got a Exception:輸入的字符串轉化成的數字必須大于0!
java.lang.Exception: 輸入的字符串轉化成的數字必須大于0!
at book.exception.ThrowAndThrows.sqrt(ThrowAndThrows.java: 30 )
at book.exception.ThrowAndThrows.main(ThrowAndThrows.java: 37 )
Exception in thread " main " java.lang.Exception: 輸入的字符串轉化成的數字必須大于0!
at book.exception.ThrowAndThrows.sqrt(ThrowAndThrows.java: 30 )
at book.exception.ThrowAndThrows.main(ThrowAndThrows.java: 37 )
源碼分析:
在main方法里,由于sqrt方法的聲明中有throws關鍵字,所以,在調用該方法時,必須對throws后面聲明的異常進行處置,處置的方法有兩種:
(1)main方法處理該異常,使用try.....catch語句,將可能會出現的異常的代碼放在try塊內,將處理異常的代碼放在catch塊內,并指明catch能夠捕獲的異常的類型,當異常被捕獲時,執行catch塊內的語句。
(2)main方法不處理該異常,將異常向外層程序拋出。在方法聲明中使用throws關鍵字拋出異常,方法體中不需要使用try...catch語句。
異常類Exception的getMessage方法用來獲取一場的描述信息,printStackTrace方法用來打印異常的堆棧信息,通過堆棧信息能夠查明異常發生的原因和位置,在調試的時候常用。
以上就是小編今天的分享了,希望可以幫助到大家。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com