最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中throws?與?throw?的區(qū)別與用法示例詳解

 更新時(shí)間:2025年09月06日 09:42:46   作者:菜鳥(niǎo)不學(xué)編程  
本文給大家介紹Java中throws與throw的區(qū)別與用法示例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

一、先看最短總結(jié)

關(guān)鍵字作用出現(xiàn)位置常用于
throw拋出一個(gè)異常對(duì)象(實(shí)際動(dòng)作)方法體內(nèi)部立即拋出某個(gè)異常
throws聲明方法可能拋出的異常類型(承諾/說(shuō)明)方法聲明處告訴調(diào)用者“我可能拋異常”

一句話記憶:

throw 是“扔出異常”,throws 是“聲明可能會(huì)扔異常”。

二、throw:真正“扔出”異常

throw 用于在方法內(nèi)部創(chuàng)建并拋出一個(gè)異常對(duì)象,程序執(zhí)行到 throw 就會(huì)立刻中斷,并把異常拋給調(diào)用者,或者被當(dāng)前方法內(nèi)部的 try-catch 捕獲。

語(yǔ)法:

throw new 異常類型("異常信息");

示例 1:手動(dòng)拋出異常

public class ThrowExample {
    public static void main(String[] args) {
        int age = -5;
        if (age < 0) {
            throw new IllegalArgumentException("年齡不能為負(fù)數(shù)!");
        }
        System.out.println("年齡是:" + age);
    }
}

輸出:

Exception in thread "main" java.lang.IllegalArgumentException: 年齡不能為負(fù)數(shù)!
    at ThrowExample.main(ThrowExample.java:5)

解釋:

  • throw 立刻拋出一個(gè)異常對(duì)象。
  • 后續(xù)代碼不會(huì)執(zhí)行。

示例 2:配合 try-catch 捕獲異常

public class ThrowExample {
    public static void main(String[] args) {
        try {
            checkAge(-5);
        } catch (IllegalArgumentException e) {
            System.out.println("捕獲到異常:" + e.getMessage());
        }
    }
    public static void checkAge(int age) {
        if (age < 0) {
            throw new IllegalArgumentException("年齡不能為負(fù)數(shù)!");
        }
        System.out.println("年齡是:" + age);
    }
}

輸出:

捕獲到異常:年齡不能為負(fù)數(shù)!

?? 要點(diǎn):

  • throw 后面是一個(gè)異常對(duì)象。
  • 一旦執(zhí)行 throw,程序會(huì)跳出當(dāng)前方法,除非被 try-catch 捕獲。

三、throws:聲明可能拋出的異常

throws 并不真正拋出異常,而是用于聲明“我這個(gè)方法 可能 拋出某種異常”,提醒調(diào)用者必須關(guān)注這個(gè)異常。

語(yǔ)法:

修飾符 返回值類型 方法名(參數(shù)列表) throws 異常類型1, 異常類型2, ... {
    // 方法體
}

示例:聲明方法可能拋異常

比如讀文件時(shí),FileReader 的構(gòu)造方法可能拋 FileNotFoundException,你就必須用 throws 聲明:

import java.io.FileReader;
import java.io.FileNotFoundException;
public class ThrowsExample {
    public static void main(String[] args) {
        try {
            readFile("test.txt");
        } catch (FileNotFoundException e) {
            System.out.println("捕獲到異常:" + e.getMessage());
        }
    }
    public static void readFile(String path) throws FileNotFoundException {
        FileReader fr = new FileReader(path);
        System.out.println("文件讀取成功!");
    }
}

如果不寫 try-catch,而又不在方法簽名里寫 throws,編譯器會(huì)報(bào)錯(cuò)。

?? 要點(diǎn):

  • throws 出現(xiàn)在方法聲明處,表示 可能 拋出的異常類型。
  • 調(diào)用方要么:
    • try-catch 捕獲;
    • 或者繼續(xù)在自己的方法上聲明 throws

四、throw 和 throws 的區(qū)別

比較throwthrows
位置方法體內(nèi)方法聲明處
作用真正拋出異常聲明可能會(huì)拋異常
后面跟異常對(duì)象異常類型(類名)
數(shù)量一次只能拋一個(gè)異常對(duì)象可聲明多個(gè)異常類型,用逗號(hào)分隔
是否是執(zhí)行動(dòng)作否,僅聲明

五、Checked 與 Unchecked 異常與 throws 的關(guān)系

Java 異常分兩類:

  • Checked Exception(受檢異常)
    • 編譯器檢查
    • 必須用 try-catch 或 throws
    • 如:IOException, SQLException
  • Unchecked Exception(運(yùn)行時(shí)異常)
    • 編譯器不會(huì)強(qiáng)制檢查
    • 不一定需要寫 throws
    • 如:NullPointerException, IllegalArgumentException

?? throws 主要用于聲明 Checked Exception。

示例:throws 通常聲明 Checked Exception

public void readData() throws IOException {
    // code that may throw IOException
}

而對(duì)于 RuntimeException(Unchecked),一般不用寫 throws:

public void divide(int a, int b) {
    if (b == 0) {
        throw new ArithmeticException("除數(shù)不能為零!");
    }
}

六、經(jīng)典面試題

throw 和 throws 有什么區(qū)別?

簡(jiǎn)答:

throw 用于方法體內(nèi),真正拋出異常對(duì)象;
throws 用于方法聲明處,表示該方法可能拋出哪些異常類型,提醒調(diào)用者處理。

? 重點(diǎn)記憶

  • throw:方法內(nèi)部,真正扔出一個(gè)異常對(duì)象
  • throws:方法聲明處,告訴外部“我可能會(huì)扔異常”
  • Checked Exception → 必須 throws 或 try-catch
  • Unchecked Exception → 可寫 throw,不一定寫 throws

這樣,你是不是對(duì) throwthrows 一下就清楚了呢???

到此這篇關(guān)于Java中throws 與 throw 的區(qū)別與用法示例詳解的文章就介紹到這了,更多相關(guān)java throws 與 throw 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Java中的重載,重寫,多態(tài),靜態(tài)綁定、動(dòng)態(tài)綁定

    淺談Java中的重載,重寫,多態(tài),靜態(tài)綁定、動(dòng)態(tài)綁定

    這篇文章主要介紹了淺談Java中的重載,重寫,多態(tài),靜態(tài)綁定、動(dòng)態(tài)綁定,具有一定借鑒價(jià)值
    2018-01-01
  • 詳解RabbitMQ核心機(jī)制

    詳解RabbitMQ核心機(jī)制

    MQ 主要用于分布式系統(tǒng)之間的通信,解決數(shù)據(jù)傳遞的效率和可靠性問(wèn)題,本文給大家介紹RabbitMQ核心機(jī)制,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • SpringBoot使用@Cacheable注解實(shí)現(xiàn)緩存功能流程詳解

    SpringBoot使用@Cacheable注解實(shí)現(xiàn)緩存功能流程詳解

    最近一直再學(xué)Spring Boot,在學(xué)習(xí)的過(guò)程中也有過(guò)很多疑問(wèn)。為了解答自己的疑惑,也在網(wǎng)上查了一些資料,以下是對(duì)@Cacheable注解的一些理解
    2023-01-01
  • javaSystem.out.println()輸出byte[]、char[]異常的問(wèn)題詳析

    javaSystem.out.println()輸出byte[]、char[]異常的問(wèn)題詳析

    這篇文章主要給大家介紹了關(guān)于javaSystem.out.println()輸出byte[]、char[]異常問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看啊
    2019-01-01
  • java.lang.IncompatibleClassChangeError異常的問(wèn)題解決

    java.lang.IncompatibleClassChangeError異常的問(wèn)題解決

    本文主要介紹了java.lang.IncompatibleClassChangeError異常的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Java輸入輸出流實(shí)例詳解

    Java輸入輸出流實(shí)例詳解

    這篇文章主要介紹了Java輸入輸出流,結(jié)合實(shí)例形式詳細(xì)分析了Java常見(jiàn)的輸入輸出常用操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-09-09
  • java使用Jsoup組件生成word文檔

    java使用Jsoup組件生成word文檔

    java使用Jsoup組件生成word文檔的方法
    2013-11-11
  • spring boot activiti工作流的搭建與簡(jiǎn)單使用

    spring boot activiti工作流的搭建與簡(jiǎn)單使用

    這篇文章主要給大家介紹了關(guān)于spring boot activiti工作流的搭建與簡(jiǎn)單使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 深入探究SpringBoot中的Sleuth用法

    深入探究SpringBoot中的Sleuth用法

    Sleuth是一個(gè)分布式跟蹤系統(tǒng),用于跟蹤應(yīng)用程序中的請(qǐng)求和操作,在本文中,我們將探討SpringBoot中的Sleuth是什么,以及如何使用它來(lái)跟蹤應(yīng)用程序中的請(qǐng)求和操作,感興趣的小伙伴跟著小編一起來(lái)探討吧
    2023-07-07
  • 使用Java實(shí)現(xiàn)將一個(gè)正整數(shù)分解質(zhì)因數(shù)

    使用Java實(shí)現(xiàn)將一個(gè)正整數(shù)分解質(zhì)因數(shù)

    這篇文章主要介紹了如何使用Java語(yǔ)言實(shí)現(xiàn)將一個(gè)正整數(shù)分解為質(zhì)因數(shù)的功能,首先,我們定義了一個(gè)正整數(shù)并調(diào)用一個(gè)方法來(lái)輸出其質(zhì)因數(shù)分解結(jié)果,需要的朋友可以參考下
    2026-01-01

最新評(píng)論

绥江县| 稻城县| 上高县| 峡江县| 虹口区| 类乌齐县| 顺平县| 富宁县| 苏州市| 梅州市| 肥西县| 枞阳县| 八宿县| 乌什县| 古田县| 铜鼓县| 湘西| 溧阳市| 兴山县| 阳原县| 安达市| 嘉鱼县| 新蔡县| 绥芬河市| 咸丰县| 乡宁县| 阿合奇县| 阆中市| 咸阳市| 姚安县| 本溪| 莆田市| 达拉特旗| 林口县| 和硕县| 亚东县| 浪卡子县| 保山市| 惠安县| 清水县| 泾阳县|