Java中的throws異常處理及使用細(xì)節(jié)
一. throw關(guān)鍵字:
1.作用:
throw關(guān)鍵字用于在程序中手動拋出一個異常。當(dāng)異常發(fā)生時,程序會中斷當(dāng)前的執(zhí)行流程,并將異常信息傳遞給上層的異常處理機(jī)制。
2.使用場景:
(a)當(dāng)我們發(fā)現(xiàn)某些條件不符合業(yè)務(wù)邏輯要求時,我們可以使用throw關(guān)鍵字拋出一個異常。
(b)當(dāng)我們在定義自己的異常類時,可以通過throw關(guān)鍵字主動拋出這個自定義的異常對象。
3.代碼示例:
public void checkAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("年齡不能為負(fù)數(shù)");
}
}二. throws關(guān)鍵字:
1.作用:
throws關(guān)鍵字用于指定方法可能拋出的異常。它標(biāo)識了哪些異??梢詡鬟f到方法的調(diào)用者,需要調(diào)用者進(jìn)行相應(yīng)的處理。
2.使用場景:
(a)當(dāng)方法內(nèi)部的代碼可能會引發(fā)異常時,可以使用throws關(guān)鍵字聲明這些異常。
(b)當(dāng)我們不希望在當(dāng)前方法中捕獲異常,并且希望將異常傳遞給上層調(diào)用者來處理時,可以使用throws關(guān)鍵字。
3.代碼示例:
public void readFile() throws IOException {
// 異常處理邏輯
}三. 區(qū)別與聯(lián)系:
throw關(guān)鍵字是用于在方法內(nèi)拋出異常,而throws關(guān)鍵字是在方法聲明中指定可能拋出的異常。
Java的throws異常處理
基本介紹:
1)如果一個方法(中的執(zhí)行語句)可能生成某種異常,但是并不能確定如何處理這種異常,則此方法應(yīng)顯示的聲明拋出異常,表明該方法將不對這些異常進(jìn)行處理,而由該方法的調(diào)用者負(fù)責(zé)處理
2)在方法聲明中用throws語句可以聲明拋出異常的列表,throws后面的異常類型可以是方法中產(chǎn)生的異常類型,也可以是它的父類
package com.exception_;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Throws01 {
public static void main(String[] args) {
}
public void f1() throws FileNotFoundException,NullPointerException,ArithmeticException{ //也可以寫throws Exception
//創(chuàng)建了一個文件流對象
//解讀:
//這里的異常是一個FileNotFoundException 編譯異常,必須對其處理
//使用try-catch-finally處理
//或使用throws拋出異常,讓調(diào)用f1()的調(diào)用者來處理
//throws后面的異常類型可以是方法中產(chǎn)生的異常類型,也可以是它的父類(如Exception,Error(基類)和它的父類)
//throws 關(guān)鍵字后也可以是 異常列表,即可以拋出多個異常
FileInputStream fis = new FileInputStream("d://aa.txt");
}
}注意事項和使用細(xì)節(jié):
1)對于編譯異常,程序中必須處理,比如try-catch或throws
2)對于運行時異常,程序中如果沒有處理,默認(rèn)就是throws的方式
3)子類重寫父類的方法時,對拋出異常的規(guī)定:子類重寫的方法,所拋出的異常類型要么和父類拋出的異常一致,要么為父類拋出的異常的類型的子類型
4)在throws過程中,如果有方法try-catch,就相當(dāng)于處理異常,就可以不必throws
package com.exception_;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class ThrowsDetails {
public static void main(String[] args) {
}
public void f2() /*throws ArithmeticException 把異常拋給調(diào)用者,默認(rèn)不寫也有*/
{
int n1 = 10;
int n2 = 0;
double res = n1/n2;
}
public void f1() throws FileNotFoundException{
f3();//當(dāng)f1()不去throws時,這個語句會報錯
//解讀:
//1.因為f3() 方法拋出的是一個編譯異常
//2.即這時,就要求f1() 必須處理這個異常(try-catch或繼續(xù)throws)
}
public void f3() throws FileNotFoundException {
FileInputStream fis = new FileInputStream("d://aa.txt");
}
public static void f4(){
f5();//這里直接調(diào)用f5不會報錯
//解讀:
//f5拋出的是一個運行異常
//java中并不要求程序員顯示處理,因為有默認(rèn)處理機(jī)制
}
public static void f5() throws ArithmeticException{
}
}
class Father{//父類
public void method() throws RuntimeException{
}
}
class Son extends Father{//子類
//子類重寫父類的方法時,對拋出異常的規(guī)定:
//子類重寫的方法,所拋出的異常類型要么和父類拋出的異常一致,要么為父類拋出的異常的類型的子類型
@Override
public void method() throws NullPointerException{//子類拋出的類型必須是它父類拋出類型的子類
super.method();
}
}到此這篇關(guān)于Java中的throws異常處理及使用細(xì)節(jié)的文章就介紹到這了,更多相關(guān)java throws異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA關(guān)閉SpringBoot程序后仍然占用端口的排查與解決方法
在使用 IntelliJ IDEA 開發(fā) Spring Boot 應(yīng)用時,有時即使關(guān)閉了應(yīng)用,程序仍然占用端口,這會導(dǎo)致重新啟動應(yīng)用時出現(xiàn)端口被占用的錯誤,所以本文給大家介紹了IDEA關(guān)閉SpringBoot程序后仍然占用端口的排查與解決方法,需要的朋友可以參考下2025-02-02
如何解決遇到的錯誤信息?java:?找不到符號?符號:?變量?log
使用Lombok的@Slf4j注解時出現(xiàn)log變量找不到問題,這篇文章主要介紹了如何解決遇到的錯誤信息?java:?找不到符號?符號:?變量?log的相關(guān)資料,文中將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2025-05-05
SpringMVC用JsonSerialize日期轉(zhuǎn)換方法
下面小編就為大家?guī)硪黄猄pringMVC用JsonSerialize日期轉(zhuǎn)換方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起 小編過來看看吧2016-11-11
SpringBoot如何讀取application.properties配置文件
這篇文章主要介紹了SpringBoot如何讀取application.properties配置文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05

