一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java異常處理throws完成異常拋出詳解

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

2022-02-17 15:08guoyp2126 Java教程

這篇文章主要介紹了java異常處理中throws完成異常拋出示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家學有所得多多進步

已檢查異常拋出

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

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方法為調用方,調用方通過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());
        }
    }

執行結果如下:

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

自定義異常拋出

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

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

LoginException類繼承異常類Exception

public class LoginException extends Exception {

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

編寫業務代碼Login,定義方法loginDemo,該方法拋出異常LoginException,根據業務規則拋出異常

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("登錄成功!");
    }
}

調用代碼為:

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

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

執行結果為

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

對于上述簡單的異常處理,我們一般直接使用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("登錄成功!");
    }
}

結論

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

異常向上拋出是指在方法中產生異常或獲取異常后并不做任何處理,而是將“皮球”踢給調用方,調用方繼續踢給它的下一級調用方,還是自己處理那是調用方的事情。向調用方拋出異常在方法的聲明處使用throws關鍵字,后面跟要拋出異常的類型,也可以是多種類型異常,不同的異常用逗號隔開。

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

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

在向上拋出異常時,通常會使用到throw,就是在一個方法的內部,當異常發生時拋出一個自定義的異常。

以上就是java異常處理throws完成異常拋出詳解的詳細內容,更多關于java異常throws完成異常拋出的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/guoyp2126/article/details/117568504

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品suv一区二区 | 亚洲国产综合另类视频 | 国产精品www | 青苹果乐园影院在线播放 | 美女的隐私无遮挡撒尿 | 九九精品99久久久香蕉 | 果冻传媒 天美 麻豆 | 任你操视频在线观看 | 暖暖影院日本版 | 成 人 亚洲 综合天堂 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 日韩精品在线一区二区 | 国产高清露脸学生在线观看 | 久久婷婷五月综合色精品首页 | 三极片在线观看 | 美女翘臀跪床被打屁股作文 | 国产成人久久精品区一区二区 | 亚洲va欧美va国产va天堂影 | 国产成人啪精品午夜在线播放 | 99这里只有精品在线 | 久久亚洲精品中文字幕60分钟 | 欧美专区在线视频 | 日韩人成免费网站大片 | 无人影院在线播放视频 | 穆挂英风流艳史小说 | 91香蕉小视频 | 国产色司机在线视频免费观看 | 国产亚洲精品自在线亚洲情侣 | 34看网片午夜理 | 风间由美m3u8在线 | 极品虎白女在线观看一线天 | 欧美va在线观看 | 五月婷婷在线播放 | 国产精品一区二区不卡的视频 | 91插视频 | 午夜电影三级还珠格格 | 高h细节肉爽文办公室 | 高清黄色直接看 | 日韩在线资源 | 特黄特色大片免费影院 | 亚洲精品久久久久福利网站 |