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

java異常處理throws完成異常拋出詳解

 更新時間:2021年10月13日 10:55:04   作者:guoyp2126  
這篇文章主要介紹了java異常處理中throws完成異常拋出示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家學(xué)有所得多多進步

已檢查異常拋出

對于已檢查異常(checked exceptions),編譯器強制要求捕獲并處理可能發(fā)生的異常,不處理就不能通過編譯。但調(diào)用的方法沒有能力處理這種異常,對于這種情況,可以在方法聲明處使用throws子句來聲明拋出異常,而是調(diào)用層次向上傳遞,誰調(diào)用這個方法,這個異常就由誰來處理。如:在service層讀取文件,如果文件不存在,則需要將文件不存在的這條信息反饋給用戶。要求在service層將此異常向上拋,用戶層調(diào)用services層獲取此條信息,反饋給用戶。示例代碼如下:
創(chuàng)建類ReadFile為業(yè)務(wù)類,該類中方法 readTxtFile需要讀取硬盤上的文件,操作文件時會拋出IOException,但業(yè)務(wù)類并不能將發(fā)生異常信息推送給前端用戶,此時將異常向上拋,延遲到調(diào)用方進行處理。

public class ReadFile {
    public void readTxtFile(String filePath) throws IOException {
        String encoding = "GBK";
        File file = new File(filePath);
        InputStreamReader read = new InputStreamReader(
                new FileInputStream(file), encoding);//考慮到編碼格式
        BufferedReader bufferedReader = new BufferedReader(read);
        String lineTxt = null;
        while ((lineTxt = bufferedReader.readLine()) != null) {
            System.out.println(lineTxt);
        }
    }
}

在方法中使用throws IOException向上拋出異常,異常種類為IO操作異常。main方法為調(diào)用方,調(diào)用方通過try catch獲取異常,并將異常輸出至控制臺,代碼如下

    public static void main(String[] args)  {
        ReadFile readFile = new ReadFile();
        try {
            readFile.readTxtFile("d://temp1.txt");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println(e.toString());
        }
    }

執(zhí)行結(jié)果如下:

在這里插入圖片描述

自定義異常拋出

在編程過程我們會根據(jù)業(yè)務(wù)規(guī)則,將一些不符合業(yè)務(wù)規(guī)則的操作也可以定義為異常。這時我們就需要使用到自定義異常,如果在實現(xiàn)方法中無法處理這種異常,這些異常還需向上拋出。

Java 可通過繼承的方式編寫自己的異常類,自定義異常類均繼承自 Exception 類,個可完成異常類編寫。如:用戶登錄時再service層有一個方法,用戶名不存在或者密碼不正確,均為異常,這時就需要用戶自定義異常。該方法是業(yè)務(wù)層方法,無法將異常直接反饋給操作用戶,需要通過交互層(如:controller)調(diào)用該方法時,捕獲此種異常并將該異常返回給前端。具體示例代碼如下:
首先定義簡單的自定義異常類LoginException,代表是登錄異常類。Exception 是所有異常類的父類,該類中已經(jīng)封裝了異常信息輸出、異常發(fā)生位置描述等方法,提供復(fù)用。

LoginException類繼承異常類Exception

public class LoginException extends Exception {

    public LoginException(String message){
        super(message);
    }
}

編寫業(yè)務(wù)代碼Login,定義方法loginDemo,該方法拋出異常LoginException,根據(jù)業(yè)務(wù)規(guī)則拋出異常

public class Login {
    public void loginDemo(String userName, String psw) throws LoginException {

        if (!userName.equals("張三")) {
            throw new LoginException("用戶名錯誤!");
        } else if (!psw.equals("000000")) {
            throw new LoginException("密碼錯誤!");
        }
        System.out.println("登錄成功!");
    }
}

調(diào)用代碼為:

 public  static void loginDemo(String name,String psw){
        Login login = new Login();

        try {
            login.loginDemo(name,psw);
        } catch (LoginException e) {
            e.printStackTrace();
        }
    }

執(zhí)行結(jié)果為

在這里插入圖片描述

對于上述簡單的異常處理,我們一般直接使用throw new Exception(""),無需定義新的異常類,代碼可以修改如下:

public class Login {
    public void login(String userName, String psw) throws Exception {

        if (!userName.equals("張三")) {
            throw new Exception("用戶名錯誤!");
        } else if (!psw.equals("000000")) {
            throw new Exception("密碼錯誤!");
        }
        System.out.println("登錄成功!");
    }
}

結(jié)論

在軟件開發(fā)的很多場景中,方法并不具有處理異常的能力,如在業(yè)務(wù)層代碼或取的異常,需要將異常的信息通過交互層的代碼反饋給使用者(當(dāng)然也可以通過方法返回值進行反饋,但這種返回只能是簡單的)。

異常向上拋出是指在方法中產(chǎn)生異?;颢@取異常后并不做任何處理,而是將“皮球”踢給調(diào)用方,調(diào)用方繼續(xù)踢給它的下一級調(diào)用方,還是自己處理那是調(diào)用方的事情。向調(diào)用方拋出異常在方法的聲明處使用throws關(guān)鍵字,后面跟要拋出異常的類型,也可以是多種類型異常,不同的異常用逗號隔開。

如:test方法執(zhí)行時可能會拋出三種異常

public static void test(int a) throws TestAException, TestBException,TestCException{
//業(yè)務(wù)代碼
}

在向上拋出異常時,通常會使用到throw,就是在一個方法的內(nèi)部,當(dāng)異常發(fā)生時拋出一個自定義的異常。

以上就是java異常處理throws完成異常拋出詳解的詳細內(nèi)容,更多關(guān)于java異常throws完成異常拋出的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • IDEA中JetBrains Mono字體的正確安裝姿勢

    IDEA中JetBrains Mono字體的正確安裝姿勢

    在 JetBrains Mono 的設(shè)計階段,它就充分考慮到了長時間工作可能導(dǎo)致的眼睛疲勞問題,比如字母的大小和形狀、空間量、自然等寬平衡、不必要的細節(jié)、連字、以及難以區(qū)分的符號等,從而最終設(shè)計出了這么一款字體
    2021-06-06
  • Java CountDownLatch應(yīng)用場景代碼實例

    Java CountDownLatch應(yīng)用場景代碼實例

    這篇文章主要介紹了Java CountDownLatch應(yīng)用場景代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 關(guān)于IntelliJ IDEA 打包代碼報錯的問題

    關(guān)于IntelliJ IDEA 打包代碼報錯的問題

    這篇文章主要介紹了關(guān)于IntelliJ IDEA 打包代碼報錯的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Spring Cloud Hystrix入門和Hystrix命令原理分析

    Spring Cloud Hystrix入門和Hystrix命令原理分析

    這篇文章主要介紹了Spring Cloud Hystrix入門和Hystrix命令原理分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Java實現(xiàn)訂單超時自動取消的7種方案

    Java實現(xiàn)訂單超時自動取消的7種方案

    在電商、外賣、票務(wù)等系統(tǒng)中,訂單超時未支付自動取消是一個常見的需求,這個功能乍一看很簡單,甚至很多初學(xué)者會覺得:"不就是加個定時器么?" 但真到了實際工作中,細節(jié)的復(fù)雜程度往往會超乎預(yù)期,本文給大家介紹了Java實現(xiàn)訂單超時自動取消的7種方案
    2024-12-12
  • JDBC用IDEA連接SQLServer數(shù)據(jù)庫的超實用教程

    JDBC用IDEA連接SQLServer數(shù)據(jù)庫的超實用教程

    JDBC是Java連接數(shù)據(jù)庫的一種接口,它由各個數(shù)據(jù)庫廠商為開發(fā)者提供的接口,要使用它需要到相應(yīng)廠商下載對應(yīng)的jar包,下面這篇文章主要給大家介紹了關(guān)于JDBC用IDEA連接SQLServer數(shù)據(jù)庫的超實用教程,需要的朋友可以參考下
    2023-05-05
  • Java面試題之基本語法(圖解)

    Java面試題之基本語法(圖解)

    這篇文章主要介紹了關(guān)于Java面試題之基本語法的相關(guān)資料,文中通過圖片說明介紹的很詳細,相信對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。
    2017-02-02
  • Java中的collection集合類型總結(jié)

    Java中的collection集合類型總結(jié)

    Java的集合類型都是對java.util包中Collection接口的繼承,這里我們主要介紹依賴于collection的一些主分支,一起來看一下Java中的collection集合類型總結(jié)
    2016-05-05
  • Jmeter post上傳文件實現(xiàn)過程詳解

    Jmeter post上傳文件實現(xiàn)過程詳解

    這篇文章主要介紹了Jmeter post上傳文件實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 深入理解Maven環(huán)境搭建和介紹

    深入理解Maven環(huán)境搭建和介紹

    這篇文章主要介紹了深入理解Maven環(huán)境搭建和介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論

拉孜县| 安丘市| 江源县| 漯河市| 汶上县| 澳门| 霸州市| 临夏县| 临清市| 安陆市| 胶州市| 黄梅县| 石狮市| 鸡东县| 常宁市| 聊城市| 延津县| 会泽县| 霸州市| 肥东县| 阳高县| 仙居县| 宜兰县| 太保市| 丰顺县| 呼和浩特市| 手游| 垣曲县| 通许县| 车致| 新乡县| 兴国县| 德安县| 三河市| 鄯善县| 清新县| 油尖旺区| 贵溪市| 庆城县| 台湾省| 龙胜|