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

如何區(qū)分JAVA中的throws和throw

 更新時間:2020年06月28日 15:38:46   作者:你的龍兒  
這篇文章主要介紹了如何區(qū)分JAVA中的throws和throw,文中講解十分詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

throws和throw:

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

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

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

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

分別介紹:

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

注意:方法名后面跟上 throws Exception 證明這個方法里的語句可能會發(fā)生異常,注意是可能!在別處如果調(diào)用這個方法時,就必須也拋出異常或者用try catch 處理。 throws是可以單獨(dú)使用的。

eg:(代碼示例01)

public class Test {
  public static void main(String[] args) throws Exception {
    Test test = new Test();
    /*** 調(diào)用的方法里拋出了異常,依然要調(diào)用的2種方式
     * 1、繼續(xù)聲明異常(此代碼塊兒為本方式)
     * 2、用try catch 代碼塊包住 test.compute()
     */
    test.compute();
    
  }
 
  public void compute() throws Exception{
    System.out.println("我可能發(fā)生異常");
    System.out.println("3/0的值為" +3/0);
  }
}

eg:(代碼示例02)

public class Test {
  public static void main(String[] args){
    Test test = new Test();
    /*** 調(diào)用的方法里拋出了異常,依然要調(diào)用的2種方式
     * 1、拋出異常
     * 2、用try catch 代碼塊包住 test.compute()進(jìn)行捕獲并解決異常(此代碼塊兒為此方式)
     */
    try {
      test.compute();
    } catch (Exception e) {
      e.printStackTrace();
      System.err.println("除數(shù)不能為0");
    }

  }

  public void compute() throws Exception{
    System.out.println("我可能發(fā)生異常");
    System.out.println("3/0的值為" +3/0);
  }
}

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

eg(代碼示例01):

package Exception005.usuallyWrong.usuallyWrong01;

import java.util.Scanner;

/**
 * 方式1:方法后未加throws Exception,在代碼塊兒中使用try-catch進(jìn)行捕獲異常,在if選擇結(jié)構(gòu)中加入throw,實現(xiàn)了手動異常,方式2:調(diào)用方法時繼續(xù)聲明該異常
 */
public class ByoneselfThrow {
  String name;
  String sex;
  int age;
  public void byoneself(){
    Scanner input=new Scanner(System.in);
    System.out.println("請輸入你的姓名:");
    name=input.next();
    System.out.println("請輸入你的年齡:");
    age=input.nextInt();
    System.out.println("請輸入你的性別:");
    sex=input.next();
    try{
      if("男".equals(sex)||"女".equals(sex)){
        System.out.println("我的名字叫"+name+",年齡為"+age+",性別為"+sex);
      }else{
        throw new Exception("性別只能是男/女!");
      }
    }catch (Exception e){
      e.printStackTrace();
    }
  }
}
class Test{
  public static void main(String[] args) {
    ByoneselfThrow center=new ByoneselfThrow();
    center.byoneself();
  }
}

eg(代碼示例02):

package Exception005.usuallyWrong.usuallyWrong01;

import java.util.Scanner;

/**
 * 方式1:方法后加throws Exception(聲明異常),在if選擇結(jié)構(gòu)中加入throw(手動拋出異常),在調(diào)用方法時使用try-catch進(jìn)行捕獲并解決異常,實現(xiàn)了手動異常
 * 方式2:調(diào)用方法時繼續(xù)聲明該異常
 */
public class ByoneselfThrow {
  String name;
  String sex;
  int age;
  public void byoneself()throws Exception{
    Scanner input=new Scanner(System.in);
    System.out.println("請輸入你的姓名:");
    name=input.next();
    System.out.println("請輸入你的年齡:");
    age=input.nextInt();
    System.out.println("請輸入你的性別:");
    sex=input.next();
      if("男".equals(sex)||"女".equals(sex)){
        System.out.println("我的名字叫"+name+",年齡為"+age+",性別為"+sex);
      }else{
        throw new Exception("性別只能是男/女!");
      }

    }
  }
class Test{
  public static void main(String[] args) {
    ByoneselfThrow center=new ByoneselfThrow();
    try {
      center.byoneself();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

eg(代碼示例03):

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異常的方法既可以顯式捕獲該異常,
    //也可不理會該異常
    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異常,既可以顯式捕獲該異常
      //也可完全不理會該異常,把該異常交給該方法調(diào)用者處理
      throw new RuntimeException("a的值大于0,不符合要求");
    }
  }
}

總結(jié):

throws可以單獨(dú)使用,throw不可以,必須搭配try catch,或者throws,若程序執(zhí)行到throw exception 語句,則后面的語句不會再執(zhí)行。

以上就是如何區(qū)分JAVA中的throws和throw的詳細(xì)內(nèi)容,更多關(guān)于JAVA中的throws和throw的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解析Spring Mvc Long類型精度丟失問題

    解析Spring Mvc Long類型精度丟失問題

    在平時開發(fā)過程中,經(jīng)常會使用long類型作為id的類型,但是在使用過程中會導(dǎo)致long類型數(shù)據(jù)轉(zhuǎn)換為number類型時的后兩位變?yōu)?,今天小編給大家分享Spring Mvc Long類型精度丟失問題,需要的朋友參考下吧
    2021-06-06
  • 簡單談?wù)凧ava中的棧和堆

    簡單談?wù)凧ava中的棧和堆

    堆和棧都是Java用來在RAM中存放數(shù)據(jù)的地方,下面這篇文章主要給大家介紹了關(guān)于Java中棧和堆的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11
  • Java中的關(guān)鍵字volatile詳解

    Java中的關(guān)鍵字volatile詳解

    這篇文章主要介紹了Java中的關(guān)鍵字volatile,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式

    Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式

    這篇文章主要介紹了Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 使用JAR包中MANIFEST.MF的注意事項

    使用JAR包中MANIFEST.MF的注意事項

    這篇文章主要介紹了使用JAR包中MANIFEST.MF的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java小白第一次就能看懂的網(wǎng)絡(luò)編程

    Java小白第一次就能看懂的網(wǎng)絡(luò)編程

    網(wǎng)絡(luò)編程是指編寫運(yùn)行在多個設(shè)備(計算機(jī))的程序,這些設(shè)備都通過網(wǎng)絡(luò)連接起來。本文介紹了一些網(wǎng)絡(luò)編程基礎(chǔ)的概念,并用Java來實現(xiàn)TCP和UDP的Socket的編程,來讓讀者更好的了解其原理
    2021-08-08
  • Java?CAS與Atomic原子操作核心原理詳解

    Java?CAS與Atomic原子操作核心原理詳解

    CAS(Compare?and?Swap)和Atomic原子操作是保證多線程并發(fā)安全的常用機(jī)制,能夠高效地實現(xiàn)對共享變量的安全訪問和修改,避免線程競爭導(dǎo)致的數(shù)據(jù)不一致和死鎖等問題。它們的應(yīng)用可以提高程序的并發(fā)性能和可維護(hù)性,是多線程編程中的重要工具
    2023-04-04
  • Mybatis-Plus如何使用分頁實例詳解

    Mybatis-Plus如何使用分頁實例詳解

    最近在研究mybatis,然后就去找簡化mybatis開發(fā)的工具,下面這篇文章主要給大家介紹了關(guān)于Mybatis-Plus如何使用分頁的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • 淺析Java集合中的LinkedHashSet

    淺析Java集合中的LinkedHashSet

    這篇文章主要介紹了淺析Java集合中的LinkedHashSet,LinkedHashSet?是?Java?中的一個集合類,它是?HashSet?的子類,并實現(xiàn)了?Set?接口,與?HashSet?不同的是,LinkedHashSet?保留了元素插入的順序,并且具有?HashSet?的快速查找特性,需要的朋友可以參考下
    2023-09-09
  • Json在Struts中的轉(zhuǎn)換與傳遞方法

    Json在Struts中的轉(zhuǎn)換與傳遞方法

    下面小編就為大家?guī)硪黄狫son在Struts中的轉(zhuǎn)換與傳遞方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11

最新評論

进贤县| 渑池县| 那坡县| 连南| 广西| 嵊泗县| 张家港市| 乌审旗| 延边| 凤山市| 乌鲁木齐市| 泌阳县| 通辽市| 苏尼特左旗| 天津市| 武安市| 邹平县| 湾仔区| 阿克陶县| 确山县| 仲巴县| 普兰店市| 婺源县| 凤城市| 广宗县| 犍为县| 老河口市| 三明市| 唐山市| 石景山区| 双城市| 米易县| 当涂县| 德令哈市| 军事| 永嘉县| 互助| 满城县| 沅陵县| 永丰县| 黄龙县|