国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java中的異常你了解多少?

這篇具有很好參考價值的文章主要介紹了Java中的異常你了解多少?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一.認識異常

在Java中,我們將程序執(zhí)行過程中發(fā)生不正常的情況稱為異常。

我們先看下面這行代碼,我們將字符串賦值給了字符類型的s,由我們所學(xué)習(xí)的知識來判斷,這肯定是不能通過的。

char s = "adas";

接下來我們來簡單了解幾種異常:
1.算數(shù)異常

Java中的異常你了解多少?,java,python,開發(fā)語言

2.數(shù)組越界異常

  int[] arr = new int[]{1,2,3};
        System.out.println(arr[5]);

Java中的異常你了解多少?,java,python,開發(fā)語言

3.空指針異常

  int[] str = null;
        System.out.println(str.length);

Java中的異常你了解多少?,java,python,開發(fā)語言

二.異常分類

Java中的異常你了解多少?,java,python,開發(fā)語言
由圖可以看出
1.Throwable是所有異常體系的頂層類,由它延伸出兩個重要的子類ErrorException
2.Error是指Java虛擬機無法處理的嚴重問題,比如JVM的內(nèi)部錯誤,資源耗盡等,代表的錯誤有StackOverflowError和OutOfMemoryError。
3.Exception是在程序運行發(fā)現(xiàn)猴程序員可以自己解決的異常,比如感冒,發(fā)燒。我們平時所說的異常就是Exception。

三.異常的分類

1.編譯時異常

編譯時異常也叫做受檢查異常,是指程序在編譯時就出現(xiàn)的錯誤。

舉例如下

Java中的異常你了解多少?,java,python,開發(fā)語言

我們將3.66浮點型數(shù)字賦值給int型的變量a,這時編譯器就會報錯,我們這時根據(jù)編譯器報的提示就可以修改錯誤。

2.運行時異常

在程序運行時報的錯誤,叫做運行時異常,也叫非受檢查異常。

RunTimeException以及其子類對應(yīng)的異常,都稱為運行時異常。比如:NullPointerException、ArrayIndexOutOfBoundsException,ArithmeticException。

四.異常的處理

那么我們發(fā)現(xiàn)異常后,我們就需要解決異常,這里有兩種處理異常的方法

1.LYBL:事前防御型

Look Before You Leap。顧名思義,這就是在操作之前就做好充分的檢查。

      boolean ret =false;
          ret = 進入系統(tǒng)();
          if(!ret){
              進入系統(tǒng)錯誤!;
              return;
          }
          ret = 輸入賬號();
        if(!ret){
            賬號錯誤!;
            return;
        }
          ret = 輸入密碼();
        if(!ret){
            密碼錯誤!;
            return;
        }
          ret = 操作選擇();
        if(!ret){
            輸入操作錯誤!;
            return;
        }

這樣的代碼將操作和異常的拋出混合在一起,使代碼看起來十分混亂,想要找到某一個操作還需要一個一個瀏覽。所有我們一般不使用這種異常處理方法.

2.EAFP:事后認錯型

It’s Easier To ASk Forgiveness Than Permission ?!笆潞螳@取原諒比事前獲取許可更容易”. 也就是先操作, 遇到問題再處理

  boolean ret =false;
        try{
            ret = 進入系統(tǒng)();
            ret = 輸入賬號();
            ret = 輸入密碼();
            ret = 操作選擇();
        }catch(進入系統(tǒng)錯誤){
            處理進入系統(tǒng)錯誤;
        }catch(輸入賬號錯誤){
            處理輸入賬號錯誤;
        }catch(輸入密碼錯誤){
            處理輸入密碼錯誤;
        }catch(操作選擇錯誤){
            處理操作選擇錯誤;
        }

這樣正確流程和錯誤流程是分開的,程序更關(guān)注正常流程。使得代碼更加清晰,更加容易理解,在日常中,處理代碼異常的核心思想就是EAFP;
在Java中,處理異常的五個關(guān)鍵字:throw、try、catch、final、throws。

五.異常的拋出

Throw

可以通過throw程序員來自己拋出應(yīng)該異常

public class Main {
    public static void func(int[]  arry){
        if(arry == null){
            throw new NullPointerException();
        }
    }
    public static void main(String[] args) {
        func(null);

    }
}

Java中的異常你了解多少?,java,python,開發(fā)語言
同一時刻,只會拋出一個異常。

注意事項

  1. throw必須寫在方法體內(nèi)部
  2. 拋出的對象必須是Exception 或者 Exception 的子類對象
  3. 如果拋出的是 RunTimeException 或者 RunTimeException 的子類,則可以不用處理,直接交給JVM來處理
  4. 如果拋出的是編譯時異常,用戶必須處理,否則無法通過編譯
  5. 異常一旦拋出,其后的代碼就不會執(zhí)行

六.異常的捕獲

1.異常的捕獲

異常的捕獲,也就是異常的具體處理方式,主要有兩種:異常聲明throws 以及 try-catch捕獲處理

2.異常聲明throws

處在方法聲明時參數(shù)列表之后,當(dāng)方法中拋出編譯時異常,用戶不想處理該異常,此時就可以借助throws將異常拋給方法的調(diào)用者來處理。即當(dāng)前方法不處理異常,提醒方法的調(diào)用者處理異常。

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

提醒程序員這里可能會拋出異常,
Java中的異常你了解多少?,java,python,開發(fā)語言
如果程序員不處理異常,則就會交給JVM來處理,此時程序就會異常終止。
當(dāng)拋出異常時,程序不會繼續(xù)向下運行。

3.try-catch捕獲并處理

Java中的異常你了解多少?,java,python,開發(fā)語言
注意

  1. []中表示可選項,可以添加,也可以不用添加
  2. try中的代碼可能會拋出異常,也可能不會

舉例
Java中的異常你了解多少?,java,python,開發(fā)語言
這里再main方法中也進行了聲明,程序編譯上,不會報錯,但是這個異常程序員也沒有處理,這時就會交給JVM來處理,就出現(xiàn)如下情況。
Java中的異常你了解多少?,java,python,開發(fā)語言
如果main方法中沒有聲明
Java中的異常你了解多少?,java,python,開發(fā)語言

Java中的異常你了解多少?,java,python,開發(fā)語言
此時使用try-catch來處理(alt+回車)
Java中的異常你了解多少?,java,python,開發(fā)語言
try
{里面放可能出現(xiàn)異常的代碼}
catch(里面放要捕獲異常的類型
{}
Java中的異常你了解多少?,java,python,開發(fā)語言

Java中的異常你了解多少?,java,python,開發(fā)語言
此時運行結(jié)果沒有異常報錯的提示,如果我們要顯示出來使用e.printStackTrace()
Java中的異常你了解多少?,java,python,開發(fā)語言

Java中的異常你了解多少?,java,python,開發(fā)語言
當(dāng)catch沒有捕獲到異常時,就會交給JVM來處理,程序就會異常終止!
Java中的異常你了解多少?,java,python,開發(fā)語言
Java中的異常你了解多少?,java,python,開發(fā)語言

七.自定義異常

如果繼承Exception就是受查異常/編譯異常,在程序未運行時,就能發(fā)現(xiàn)錯誤
如果繼承RunTimeException 就是非受查異常/運行時異常,只有在程序運行時才會報錯。Java中的異常你了解多少?,java,python,開發(fā)語言
并且自定義異常需要重寫方法,跟情況而定!
如下是博主分享的一個自定義異常的例子:
我們的目的是在用戶輸入賬號名稱和密碼時,判斷跟所存的密碼賬號是否一致,如果不相同,則報錯

public class PasswordException extends RuntimeException{
    public PasswordException() {
    }

    public PasswordException(String message) {
        super(message);
    }
}
public class UserNameException extends RuntimeException{
    public UserNameException() {
    }

    public UserNameException(String message) {
        super(message);
    }
}
package Myerror;

import test.PassWordException;

public class Login {
    public String userName = "xiaoguo";
    public String password = "henshuai";
    public void Login(String userName,String password){
        if(!this.userName.equals(userName)){
            throw new UserNameException("用戶名錯誤");
        }
        if(!this.password.equals(password)){
            throw new PassWordException("密碼錯誤!");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        try {
            Login login = new Login();
            login.Login("xiaohuang","bushuai");
        }catch (UserNameException e){
            e.printStackTrace();
            System.out.println("處理用戶名錯誤!");;
        }catch (PasswordException e){
            e.printStackTrace();
            System.out.println(" 處理密碼錯誤!");;
        }
    }

}

碼字不易,感謝觀看
如果對你有幫助的話,記得點贊??評論+關(guān)注吧文章來源地址http://www.zghlxwxcb.cn/news/detail-765001.html

到了這里,關(guān)于Java中的異常你了解多少?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【JAVASE】帶你一文了解java中異常捕獲

    【JAVASE】帶你一文了解java中異常捕獲

    ? ? 我們在java的學(xué)習(xí)之中可能會聽到異常這個詞,那么當(dāng)程序出現(xiàn)異常之后,后面的程序還能正常運行嗎,我們又該如何處理異常呢,本文就帶你詳細了解java中的異常。 ? ? ? 在生活中,我們時常會感覺到不舒服,頭疼,程序中也是一樣的,程序員們每天可能會書寫大量的

    2024年03月22日
    瀏覽(29)
  • Java開發(fā) - Spring Test知多少?

    在前文中,我們也使用了測試代碼來進行簡單的單元測試,但是我們會發(fā)現(xiàn),里面有大量的重復(fù)代碼,實際給我們的體驗并不是太好,所以這篇,我們來學(xué)習(xí)Spring Test,Spring Test不僅僅限于在Mybatis框架,只要是基于Spring的框架的都可以使用Spring Test,使用Spring Test,將給測試模

    2024年01月25日
    瀏覽(16)
  • 【Java】Java中的異常

    【Java】Java中的異常

    在Java中,異常(Exception)是指程序執(zhí)行過程中可能出現(xiàn)的不正常情況或錯誤。它是一個事件,它會干擾程序的正常執(zhí)行流程,并可能導(dǎo)致程序出現(xiàn)錯誤或崩潰。 異常在Java中是以對象的形式表示的,這些對象是從 java.lang.Throwable 類或其子類派生而來。 Throwable 是異常類層次結(jié)

    2024年02月04日
    瀏覽(15)
  • Java面試題Java 中的異常處理

    Java 異常類層次結(jié)構(gòu)圖 在 ?Java 中,所有的異常都有一個共同的祖先 ?java.lang 包中的 Throwable 類 。 Throwable : 有兩個重 要的子類: Exception (異常) 和 Error (錯誤) ,二者都是 ?Java 異常處理的重要子類,各自都包含大 量子類。 Error (錯誤) : 是程序無法處理的錯誤 ,表

    2024年02月02日
    瀏覽(38)
  • C語言:Strlen()函數(shù)你了解多少?

    C語言:Strlen()函數(shù)你了解多少?

    C語言中strlen是一種函數(shù),主要用于計算字符串的長度。 ?? strlen()從字符串的開頭位置依次往后面計數(shù),直到遇到‘\\0’停止,所計算的字符串大小為‘\\0’以前的字符所計算的值,最終的字符串長度不包括‘\\0’ ?? strlen因為是一種函數(shù),因此調(diào)用這個函數(shù)需要引用的頭文

    2024年02月06日
    瀏覽(24)
  • 鴻蒙開發(fā):深入了解Arkts語言中的Want對象及其運用

    Arkts語言中的 Want 是一種用于對象間信息傳遞的載體,主要用于應(yīng)用組件之間的信息傳遞。本文將深入探討 Want 的定義、用途、類型以及參數(shù)說明

    2024年02月04日
    瀏覽(23)
  • Java中的異常

    Java中的異常

    目錄 1. 異常產(chǎn)生的原因和分類 1.1 異常產(chǎn)生的原因 1.2 異常分類 2. 異常的處理 2.1 防御式編程 2.2 異常的拋出(throw) 2.3 異常的捕獲 2.3.1 throws異常聲明 2.3.2 try-catch捕獲異常并處理 2.3.3 finally 3.自定義異常類 Java中的異常(Exception)又稱為例外,是一個在程序執(zhí)行期間發(fā)生的事

    2024年02月08日
    瀏覽(15)
  • Java中的異常處理

    Java中的異常處理

    目錄 前言: 異常簡介:? Error類: Exception類: Exception異常: 運行異常:? 編譯異常: throw和throws:? throw: throws: try-catch: finally: 為啥叫受查異常? throw和throws的區(qū)別: 總結(jié): ? ? ? ? 應(yīng)該都聽說過Java中的異常處理,其實不止Java中有異常處理,我們學(xué)過的其

    2024年01月17日
    瀏覽(18)
  • Java 中的異常類型、異常處理機制、最佳實踐

    Java 異常是一種在程序運行時可能出現(xiàn)的錯誤或異常狀況。它們可以由多種因素引起,例如無效輸入、網(wǎng)絡(luò)連接失敗或系統(tǒng)資源不足等。 Java 提供了內(nèi)置的異常類和處理機制,以便在程序出現(xiàn)異常時能夠進行恰當(dāng)?shù)奶幚砗晚憫?yīng)。本文將探討 Java 中的異常類型、異常處理機制以

    2024年02月08日
    瀏覽(24)
  • 深入理解Java中的java.lang.ArithmeticException異常

    在Java中,異常處理是一種重要的編程機制。異常是指在程序執(zhí)行過程中發(fā)生的錯誤或異常情況,它打破了正常的程序流程,需要進行相應(yīng)的處理。Java提供了豐富的異常類和異常處理語法,使開發(fā)人員能夠更好地處理和管理異常情況。 本篇博客將著重介紹Java中的 java.lang.Ari

    2024年02月08日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包