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

java異常中throw和throws的區(qū)別及說明

 更新時(shí)間:2023年08月01日 14:14:14   作者:kobe-fly  
這篇文章主要介紹了java異常中throw和throws的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java異常throw和throws的區(qū)別

throws和throw

throws:用來聲明一個(gè)方法可能產(chǎn)生的所有異常,不做任何處理而是將異常往上傳,誰調(diào)用我我就拋給誰。

  • 用在方法聲明后面,跟的是異常類名
  • 可以跟多個(gè)異常類名,用逗號(hào)隔開
  • 表示拋出異常,由該方法的調(diào)用者來處理
  • throws表示出現(xiàn)異常的一種可能性,并不一定會(huì)發(fā)生這些異常

throw:則是用來拋出一個(gè)具體的異常類型。

  • 用在方法體內(nèi),跟的是異常對(duì)象名
  • 只能拋出一個(gè)異常對(duì)象名
  • 表示拋出異常,由方法體內(nèi)的語句處理
  • throw則是拋出了異常,執(zhí)行throw則一定拋出了某種異常  

分別介紹

throws在方法后邊聲明異常,其實(shí)就是自己不想對(duì)異常做出任何的處理,告訴別人自己可能出現(xiàn)的異常,交給別人處理,然別人處理

package com.xinkaipu.Exception;
class Math{
? ? public int div(int i,int j) throws Exception{
? ? ? ? int t=i/j;
? ? ? ? return t;
? ? }
}
public class ThrowsDemo {
? ? public static void main(String args[]) throws Exception{
? ? ? ? Math m=new Math();
? ?}
}

throw:就是自己處理一個(gè)異常,有兩種方式要么是自己捕獲異常try...catch代碼塊,要么是拋出一個(gè)異常(throws 異常)

package com.xinkaipu.Exception;
public class TestThrow
{
    public static void main(String[] args) 
    {
        try
        {
            //調(diào)用帶throws聲明的方法,必須顯式捕獲該異常
            //否則,必須在main方法中再次聲明拋出
            throwChecked(-3);            
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
        //調(diào)用拋出Runtime異常的方法既可以顯式捕獲該異常,
        //也可不理會(huì)該異常
        throwRuntime(3);
    }
    public static void throwChecked(int a)throws Exception
    {
        if (a > 0)
        {
            //自行拋出Exception異常
            //該代碼必須處于try塊里,或處于帶throws聲明的方法中
            throw new Exception("a的值大于0,不符合要求");
        }
    }
    public static void throwRuntime(int a)
    {
        if (a > 0)
        {
            //自行拋出RuntimeException異常,既可以顯式捕獲該異常
            //也可完全不理會(huì)該異常,把該異常交給該方法調(diào)用者處理
            throw new RuntimeException("a的值大于0,不符合要求");
        }
    }
}

解析java中的throw和throws關(guān)鍵字

throws關(guān)鍵字

1.1 作用

向上拋異常,把異常交給調(diào)用處處理,實(shí)際上自身并沒有處理異常

1.2 原理

一旦方法體出現(xiàn)異常,仍會(huì)在異常代碼出生成一個(gè)異常類的對(duì)象,當(dāng)此對(duì)象滿足throws后的異常類型時(shí),就會(huì)被拋出,異常代碼后續(xù)的代碼,均不執(zhí)行。

1.3 如何用

  • 1.3.1 語法
訪問權(quán)限修飾符 返回值類型 方法名(形參列表) throws 異常類型(異常類){
    //實(shí)際書寫的位置是形參列表的最后一個(gè)括號(hào)后面
}
//出現(xiàn)編譯時(shí)異常,又不想自己處理,那就可以考慮向上拋出異常
  • 1.3.2 示例代碼
package Work;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class TestDog {
    public static void main(String[] args) {
        try {
            f1();
        } catch (Exception e) {
            System.out.println("處理了");
            System.out.println(e.getMessage());
        }
        System.out.println("后面的代碼");
    }
    public static void f1() throws FileNotFoundException {
        FileOutputStream fileOutputStream=new FileOutputStream("d:\\bc.md");
        //只要處理了異常,后面的代碼都會(huì)順利執(zhí)行
        System.out.println("執(zhí)行了沒有");
    }
}
  • 1.3.3 示例代碼運(yùn)行截圖

在這里插入圖片描述

throw關(guān)鍵字

2.1 作用

手動(dòng)制造一個(gè)異常,不符合條件的時(shí)候我們可以考慮去拋出一個(gè)異常,在調(diào)用處對(duì)異常進(jìn)行邏輯的處理

2.2 如何用

  • 2.2.1 語法
訪問權(quán)限修飾符 返回值類型 方法名(形參列表) {
    throw new Exception("展示的異常信息");
}
  • 2.2.3 示例代碼

Dog類

package Work;
public class Dog {
    private String name;
    //名字
    private String type;
    //類型
    private int age;
    //年齡
    public Dog() {
    }
    public Dog(String name, String type, int age) throws Exception{
        this.name = name;
        this.type = type;
        setAge(age);
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) throws Exception{
        if(age<0||age>10){
            throw new Exception("年齡非法");
        }
        this.age = age;
    }
}

Test類

package Work;
public class Test{
    public static void main(String[] args) {
        try {
            Dog d1=new Dog("旺財(cái)","哈士奇",-9);
        } catch (Exception e) {
            //輸入有誤就打印異常信息
            System.out.println(e.getMessage());
        }
        System.out.println("后面的代碼");
    }
}
  • 2.2.4 示例代碼運(yùn)行截圖

在這里插入圖片描述

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在Maven下代理服務(wù)器設(shè)定的方式

    在Maven下代理服務(wù)器設(shè)定的方式

    今天小編就為大家分享一篇關(guān)于在Maven下代理服務(wù)器設(shè)定的方式,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java并發(fā)編程之同步容器與并發(fā)容器詳解

    Java并發(fā)編程之同步容器與并發(fā)容器詳解

    今天給大家?guī)淼奈恼率荍ava并發(fā)編程的相關(guān)知識(shí),文中對(duì)java同步容器與并發(fā)容器做了非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • JDK源碼分析之String、StringBuilder和StringBuffer

    JDK源碼分析之String、StringBuilder和StringBuffer

    這篇文章主要給大家介紹了關(guān)于JDK源碼分析之String、StringBuilder和StringBuffer的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用jdk具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • 使用Java將Excel轉(zhuǎn)換為Text的實(shí)現(xiàn)方法

    使用Java將Excel轉(zhuǎn)換為Text的實(shí)現(xiàn)方法

    在日常的數(shù)據(jù)處理和系統(tǒng)集成中,我們經(jīng)常會(huì)遇到需要將Excel文件中的數(shù)據(jù)提取出來,并以純文本格式進(jìn)行處理的場(chǎng)景,將Excel轉(zhuǎn)換為Text是一項(xiàng)基礎(chǔ)而重要的任務(wù),本文將向您介紹如何利用強(qiáng)大的 Spire.XLS for Java 庫,在Java應(yīng)用程序中輕松實(shí)現(xiàn)Excel到Text的轉(zhuǎn)換
    2025-10-10
  • idea導(dǎo)入module的正確實(shí)現(xiàn)方法

    idea導(dǎo)入module的正確實(shí)現(xiàn)方法

    文章介紹了在IntelliJ IDEA中正確導(dǎo)入Spring Cloud項(xiàng)目module的方法:通過File→New→Module from Existing Sources選擇路徑并點(diǎn)擊OK,隨后右擊pom.xml添加為Maven項(xiàng)目,最后運(yùn)行Maven Install生命周期完成編譯,強(qiáng)調(diào)操作步驟的重要性,避免因失誤導(dǎo)致問題
    2025-07-07
  • ClassLoader類加載源碼解析

    ClassLoader類加載源碼解析

    這篇文章主要為大家詳細(xì)解析了ClassLoader類加載源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Java集合中獲取數(shù)據(jù)前驅(qū)和后繼元素的實(shí)現(xiàn)

    Java集合中獲取數(shù)據(jù)前驅(qū)和后繼元素的實(shí)現(xiàn)

    使用一致性hash時(shí),如何找到一個(gè)hash值對(duì)應(yīng)的臨近節(jié)點(diǎn),可以使用集合中獲取數(shù)據(jù)的前驅(qū)和后繼元素實(shí)現(xiàn),所以本文給大家介紹了Java集合中獲取數(shù)據(jù)前驅(qū)和后繼元素的實(shí)現(xiàn),文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-05-05
  • SpringBoot多數(shù)據(jù)源切換實(shí)現(xiàn)代碼(Mybaitis)

    SpringBoot多數(shù)據(jù)源切換實(shí)現(xiàn)代碼(Mybaitis)

    實(shí)際工作中我們會(huì)遇到springboot項(xiàng)目初始化啟動(dòng)時(shí)候,不能指定具體連接哪個(gè)數(shù)據(jù)源的時(shí)候,不同的接口連接不同的數(shù)據(jù)源或者前端頁面指定連接某個(gè)數(shù)據(jù)源等等情況,就會(huì)遇到動(dòng)態(tài)數(shù)據(jù)源切換的問題,需要的朋友可以參考下
    2022-04-04
  • Java 中的進(jìn)制轉(zhuǎn)換與編碼機(jī)制詳解

    Java 中的進(jìn)制轉(zhuǎn)換與編碼機(jī)制詳解

    在 Java 編程領(lǐng)域,進(jìn)制轉(zhuǎn)換是一項(xiàng)極為基礎(chǔ)且重要的技能,下面給大家介紹Java 中的進(jìn)制轉(zhuǎn)換與編碼機(jī)制,感興趣的朋友一起看看吧
    2025-04-04
  • Java泛型類型擦除

    Java泛型類型擦除

    這篇文章主要為大家詳細(xì)介紹了Java泛型類型擦除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評(píng)論

宽城| 大埔县| 昭觉县| 资中县| 襄樊市| 垣曲县| 南阳市| 昭苏县| 兰西县| 兰州市| 莲花县| 上饶市| 青岛市| 米易县| 广州市| 章丘市| 新平| 新闻| 宜宾市| 阳西县| 商河县| 卢龙县| 白水县| 呼和浩特市| 资兴市| 东平县| 祁门县| 阿荣旗| 龙泉市| 龙游县| 交城县| 安西县| 麻江县| 峨边| 本溪市| 广宗县| 青河县| 牟定县| 建瓯市| 长白| 长治县|