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

java--異常類

這篇具有很好參考價(jià)值的文章主要介紹了java--異常類。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Java異常可以分為可檢測(cè)異常,非檢測(cè)異常:

? ?- 可檢測(cè)異常:

? ?可檢測(cè)異常經(jīng)編譯器驗(yàn)證,對(duì)于聲明拋出異常的任何方法,編譯器將強(qiáng)制執(zhí)行處理或聲明規(guī)則,不捕捉這個(gè)異常,編譯器就通不過(guò),不允許編譯
- 非檢測(cè)異常:非檢測(cè)異常不遵循處理或者聲明規(guī)則。在產(chǎn)生此類異常時(shí),不一定非要采取任何適當(dāng)操作,編譯器不會(huì)檢查是否已經(jīng)解決了這樣一個(gè)異常

? - RuntimeException 類

? ? 屬于非檢測(cè)異常,因?yàn)槠胀↗VM操作引起的運(yùn)行時(shí)異常隨時(shí)可能發(fā)生,此類異常一般是由特定操作引發(fā)。但這些操作在java應(yīng)用程序中會(huì)頻繁出現(xiàn)。因此它們不受編譯器檢查與處理或聲明規(guī)則的限制。

? 常見(jiàn)的RuntimeException子類

- IllegalArgumentException:拋出的異常表明向方法傳遞了一個(gè)不合法或不正確的參數(shù)
- NullPointerException:當(dāng)應(yīng)用程序試圖在需要對(duì)象的地方使用 null 時(shí),拋出該異常
- ArrayIndexOutOfBoundsException:當(dāng)使用的數(shù)組下標(biāo)超出數(shù)組允許范圍時(shí),拋出該異常
- ClassCastException:當(dāng)試圖將對(duì)象強(qiáng)制轉(zhuǎn)換為不是實(shí)例的子類時(shí),拋出該異常
- NumberFormatException:當(dāng)應(yīng)用程序試圖將字符串轉(zhuǎn)換成一種數(shù)值類型,但該字符串不能轉(zhuǎn)換為適當(dāng)格式時(shí),拋出該異常。

異常中常用的方法


package exception;

/**
?* 異常常見(jiàn)的方法
?*/
public class ExceptionApiDemo {
? ? public static void main(String[] args) {
? ? ? ? System.out.println("程序開(kāi)始了");

? ? ? ? try {
? ? ? ? ? ? String str = "abc";
? ? ? ? ? ? System.out.println(Integer.parseInt(str));
? ? ? ? } catch (NumberFormatException e) {
? ? ? ? ? ? //異常最常用的方法,用于將當(dāng)前錯(cuò)誤信息輸出到控制臺(tái)
? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? //獲取錯(cuò)誤消息.記錄日志的時(shí)候或提示給用戶可以使用它
? ? ? ? ? ? String message = e.getMessage();
? ? ? ? ? ? System.out.println(message);

? ? ? ? }

? ? ? ? System.out.println("程序結(jié)束了");
? ? }
}

?自定義異常

? ? 自定義異常通常用來(lái)定義那些業(yè)務(wù)上的異常問(wèn)題。

? ? 定義自定義異常需要注意以下問(wèn)題:

? ? - 異常的類名要做到見(jiàn)名知義
? ?- 需要是Exception的子類
? ?- 提供超類異常提供的所有種類構(gòu)造器


package exception;

/**
?* 非法的年齡異常
?*
?* 自定義異常通常用來(lái)說(shuō)明業(yè)務(wù)上的錯(cuò)誤.
?* 自定義異常要注意以下問(wèn)題:
?* 1:定義的類名要做到見(jiàn)名知義
?* 2:必須是Exception的子類
?* 3:提供Exception所定義的所有構(gòu)造方法
?*/
public class IllegalAgeException extends Exception{
? ? public IllegalAgeException() {
? ? }

? ? public IllegalAgeException(String message) {
? ? ? ? super(message);
? ? }

? ? public IllegalAgeException(String message, Throwable cause) {
? ? ? ? super(message, cause);
? ? }

? ? public IllegalAgeException(Throwable cause) {
? ? ? ? super(cause);
? ? }

? ? public IllegalAgeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
? ? ? ? super(message, cause, enableSuppression, writableStackTrace);
? ? }
}

package exception;

/**
?* 測(cè)試異常的拋出
?*/
public class Person {
? ? private int age;

? ? public int getAge() {
? ? ? ? return age;
? ? }

? ? /**
? ? ?* 當(dāng)一個(gè)方法使用throws聲明異常拋出時(shí),調(diào)用此方法的代碼片段就必須處理這個(gè)異常
? ? ?*/
? ? public void setAge(int age) throws IllegalAgeException {
? ? ? ? if(age<0||age>100){
? ? ? ? ? ? //使用throw對(duì)外拋出一個(gè)異常
// ? ? ? ? ? ?throw new RuntimeException("年齡不合法!");
? ? ? ? ? ? //除了RuntimeException之外,拋出什么異常就要在方法上聲明throws什么異常
// ? ? ? ? ? ?throw new Exception("年齡不合法!");

? ? ? ? ? ? //拋出自定義異常
? ? ? ? ? ? throw new IllegalAgeException("年齡超范圍:"+age);

? ? ? ? }
? ? ? ? this.age = age;
? ? }
}
package exception;

/**
?* throw關(guān)鍵字,用于主動(dòng)對(duì)外拋出一個(gè)異常
?*/
public class ThrowDemo {
? ? public static void main(String[] args){
? ? ? ? System.out.println("程序開(kāi)始了...");
? ? ? ? try {
? ? ? ? ? ? Person p = new Person();
? ? ? ? ? ? /*
? ? ? ? ? ? ? ? 當(dāng)我們調(diào)用一個(gè)含有throws聲明異常拋出的方法時(shí),編譯器要求
? ? ? ? ? ? ? ? 我們必須添加處理異常的手段,否則編譯不通過(guò).而處理手段有兩種
? ? ? ? ? ? ? ? 1:使用try-catch捕獲并處理異常
? ? ? ? ? ? ? ? 2:在當(dāng)前方法上繼續(xù)使用throws聲明該異常的拋出
? ? ? ? ? ? ? ? 具體用哪種取決于異常處理的責(zé)任問(wèn)題
? ? ? ? ? ? ?*/
? ? ? ? ? ? p.setAge(100000);//典型的符合語(yǔ)法,但是不符合業(yè)務(wù)邏輯要求
? ? ? ? ? ? System.out.println("此人年齡:"+p.getAge()+"歲");
? ? ? ? } catch (IllegalAgeException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }

? ? ? ? System.out.println("程序結(jié)束了...");
? ? }
}

總結(jié):

? ? ?

? ? ? ?異常處理是處理程序中可能發(fā)生的錯(cuò)誤或異常情況的一種機(jī)制。異常是在程序執(zhí)行期間出現(xiàn)的問(wèn)題,它們可以是編譯時(shí)異?;蜻\(yùn)行時(shí)異常。以下是詳細(xì)總結(jié):

  1. 異常分類:

    • 編譯時(shí)異常(Checked Exception):這些異常在編譯期間會(huì)被檢查到,需要顯式地處理或聲明拋出,否則編譯器會(huì)報(bào)錯(cuò)。例如:IOException、SQLException等。
    • 運(yùn)行時(shí)異常(Unchecked Exception):這些異常在編譯期間不會(huì)被強(qiáng)制檢查,可以選擇處理或不處理。例如:NullPointerException、ArrayIndexOutOfBoundsException等。
  2. 異常處理語(yǔ)句:

    • try-catch:使用該語(yǔ)句塊來(lái)捕獲可能會(huì)拋出異常的代碼。當(dāng)try塊中的代碼發(fā)生異常時(shí),會(huì)立即轉(zhuǎn)到catch塊中執(zhí)行相應(yīng)的處理代碼。
    • try-finally:使用該語(yǔ)句塊來(lái)確保無(wú)論是否發(fā)生異常,最終都會(huì)執(zhí)行finally塊中的代碼。
    • try-catch-finally:可以結(jié)合使用try、catch和finally塊來(lái)處理異常。try塊中的代碼發(fā)生異常時(shí),執(zhí)行對(duì)應(yīng)的catch塊,當(dāng)try塊中的代碼執(zhí)行完畢或發(fā)生異常時(shí),都會(huì)執(zhí)行finally塊中的代碼。
  3. 異常處理順序:

    • 當(dāng)一個(gè)方法可能會(huì)拋出多個(gè)異常時(shí),應(yīng)該將捕獲范圍小的異常放在前面,捕獲范圍大的異常放在后面。這是因?yàn)镴ava編譯器在檢查異常捕獲時(shí)是按照順序匹配的,如果將范圍大的異常放在前面,會(huì)導(dǎo)致之后的異常無(wú)法被捕獲。
  4. 異常處理的關(guān)鍵字:

    • throw:用于手動(dòng)拋出異常。可以通過(guò)實(shí)例化異常對(duì)象并將其作為參數(shù)傳遞給throw語(yǔ)句來(lái)拋出自定義異?;騄ava內(nèi)置異常。
    • throws:用于聲明方法可能拋出的異常。當(dāng)方法中可能會(huì)拋出異常,但不想在方法內(nèi)部處理時(shí),可以使用throws關(guān)鍵字在方法簽名中聲明異常,將異常拋給調(diào)用者處理。
  5. 自定義異常:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-815931.html

    • 可以自定義異常類來(lái)表示特定的異常情況。自定義異常類通常繼承自Exception或RuntimeException類。
    • 自定義異常類應(yīng)該包含至少兩個(gè)構(gòu)造函數(shù),一個(gè)是無(wú)參構(gòu)造函數(shù),另一個(gè)是帶有詳細(xì)信息的構(gòu)造函數(shù)。通過(guò)重寫Exception的getMessage()方法,可以返回自定義異常的詳細(xì)信息。

到了這里,關(guān)于java--異常類的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 開(kāi)發(fā)語(yǔ)言漫談-Java

    ? ? ? ? 由于C++過(guò)于復(fù)雜,Java誕生了。與C++相比,Java更易于學(xué)習(xí)和使用,它去掉C++中的指針和解決了內(nèi)存管理問(wèn)題。Java提供了垃圾自動(dòng)回收機(jī)制,自動(dòng)管理不再使用的內(nèi)存。Python又進(jìn)一步簡(jiǎn)化,使得語(yǔ)法更簡(jiǎn)潔,更易于閱讀和編寫。當(dāng)然隨著簡(jiǎn)化,性能就越來(lái)越低。 ? ?

    2024年04月10日
    瀏覽(25)
  • ??低曄鄼C(jī)SDK二次開(kāi)發(fā)(JAVA語(yǔ)言)

    ??低曄鄼C(jī)SDK二次開(kāi)發(fā)(JAVA語(yǔ)言)

    前言 有個(gè)項(xiàng)目需要使用java程序讀取??低暤南鄼C(jī)圖片。相機(jī)通過(guò)以太網(wǎng)連接服務(wù)器,部署在服務(wù)器上的java程序?qū)⑾鄼C(jī)拍攝的畫面保存在指定路徑下。 ??低曁峁┝藄dk開(kāi)發(fā)包,可以在官網(wǎng)中下載,windows和linux系統(tǒng)都有。但是開(kāi)發(fā)包中給出的示例代碼,無(wú)法滿足實(shí)際需要,

    2024年04月29日
    瀏覽(26)
  • Android 安卓開(kāi)發(fā)語(yǔ)言kotlin與Java該如何選擇

    Android 安卓開(kāi)發(fā)語(yǔ)言kotlin與Java該如何選擇

    ????????如今在Android開(kāi)發(fā)中,應(yīng)用層開(kāi)發(fā)語(yǔ)言主要是Java和Kotlin,Kotlin是后來(lái)加入的,主導(dǎo)的語(yǔ)言還是Java。kotlin的加入仿佛讓會(huì)kotlin語(yǔ)言的開(kāi)發(fā)者更屌一些,其實(shí)不然。 ????????有人說(shuō)kotlin的引入是解決開(kāi)發(fā)者復(fù)雜的邏輯,并且對(duì)空指針控制的比較友好,但是我們?cè)陂_(kāi)

    2024年02月11日
    瀏覽(94)
  • BsinCopilot:Java版端到端大語(yǔ)言模型開(kāi)發(fā)框架

    BsinCopilot:Java版端到端大語(yǔ)言模型開(kāi)發(fā)框架

    BsinCopilot是基于BsinPaaS開(kāi)源框架構(gòu)建的大語(yǔ)言模型應(yīng)用SaaS服務(wù),借鑒langchain的框架思想,引入??langchian4j組件,微前端微服務(wù)的架構(gòu)設(shè)計(jì),可快速助您構(gòu)建和體驗(yàn)端到端的AI應(yīng)用。 概念 說(shuō)明 Bsin 畢昇縮寫,畢昇,中國(guó)北宋發(fā)明家,活字印刷術(shù)的發(fā)明者。畢昇出身平民,長(zhǎng)期在

    2024年03月13日
    瀏覽(23)
  • 【Java】后端開(kāi)發(fā)語(yǔ)言Java和C#,兩者對(duì)比注解和屬性的區(qū)別以及作用

    【Java】后端開(kāi)發(fā)語(yǔ)言Java和C#,兩者對(duì)比注解和屬性的區(qū)別以及作用

    歡迎來(lái)到《小5講堂》 大家好,我是全棧小5。 這是《Java》序列文章,每篇文章將以博主理解的角度展開(kāi)講解, 特別是針對(duì)知識(shí)點(diǎn)的概念進(jìn)行敘說(shuō),大部分文章將會(huì)對(duì)這些概念進(jìn)行實(shí)際例子驗(yàn)證,以此達(dá)到加深對(duì)知識(shí)點(diǎn)的理解和掌握。 溫馨提示:博主能力有限,理解水平有限

    2024年01月16日
    瀏覽(28)
  • 【Java】學(xué)習(xí)一門開(kāi)發(fā)語(yǔ)言,從TA的Hello World開(kāi)始

    【Java】學(xué)習(xí)一門開(kāi)發(fā)語(yǔ)言,從TA的Hello World開(kāi)始

    歡迎來(lái)到《小5講堂》 大家好,我是全棧小5。 這是《Java》序列文章,每篇文章將以博主理解的角度展開(kāi)講解, 特別是針對(duì)知識(shí)點(diǎn)的概念進(jìn)行敘說(shuō),大部分文章將會(huì)對(duì)這些概念進(jìn)行實(shí)際例子驗(yàn)證,以此達(dá)到加深對(duì)知識(shí)點(diǎn)的理解和掌握。 溫馨提示:博主能力有限,理解水平有限

    2024年01月23日
    瀏覽(24)
  • 【Java】十年老司機(jī)轉(zhuǎn)開(kāi)發(fā)語(yǔ)言,新小白從學(xué)習(xí)路線圖開(kāi)始

    【Java】十年老司機(jī)轉(zhuǎn)開(kāi)發(fā)語(yǔ)言,新小白從學(xué)習(xí)路線圖開(kāi)始

    歡迎來(lái)到《小5講堂》 大家好,我是全棧小5。 這是《Java》序列文章,每篇文章將以博主理解的角度展開(kāi)講解, 特別是針對(duì)知識(shí)點(diǎn)的概念進(jìn)行敘說(shuō),大部分文章將會(huì)對(duì)這些概念進(jìn)行實(shí)際例子驗(yàn)證,以此達(dá)到加深對(duì)知識(shí)點(diǎn)的理解和掌握。 溫馨提示:博主能力有限,理解水平有限

    2024年01月17日
    瀏覽(124)
  • 編程開(kāi)發(fā)8大語(yǔ)言詳解,為什么Java是我最推薦的?

    編程開(kāi)發(fā)8大語(yǔ)言詳解,為什么Java是我最推薦的?

    很多沒(méi)有接觸過(guò)編程語(yǔ)言的同學(xué),都會(huì)覺(jué)得編程開(kāi)發(fā)特別高端和神奇,擔(dān)心理解不了更擔(dān)心學(xué)不會(huì)。 當(dāng)然,也有人會(huì)認(rèn)為,你既然是做編程的,那么你應(yīng)該什么都會(huì),什么軟件的開(kāi)發(fā)都能完成,這是平哥經(jīng)常聽(tīng)到的兩種聲音。 在此,平哥需要給大家科普一下, 編程確實(shí)改變

    2024年02月05日
    瀏覽(18)
  • Java轉(zhuǎn)Go:java開(kāi)發(fā)者轉(zhuǎn)學(xué)go語(yǔ)言,請(qǐng)給我一些建議和學(xué)習(xí)推薦

    Java轉(zhuǎn)Go:java開(kāi)發(fā)者轉(zhuǎn)學(xué)go語(yǔ)言,請(qǐng)給我一些建議和學(xué)習(xí)推薦

    在做開(kāi)發(fā)時(shí)遇到最無(wú)理的需求就是部門沒(méi)了?? 遇到最無(wú)理的需求就是部門沒(méi)了??,差點(diǎn)人也在這個(gè)公司沒(méi)了,但好在是跟著大部隊(duì)換了一個(gè)部門,就是要轉(zhuǎn)go,也可能要用js和solidity開(kāi)發(fā) 一開(kāi)始知道部門沒(méi)了,第一時(shí)間一定是會(huì)擔(dān)心,甚至后面知道有的同事要被畢業(yè),有的同

    2024年02月13日
    瀏覽(19)
  • 大型醫(yī)院云HIS系統(tǒng):采用前后端分離架構(gòu),前端由Angular語(yǔ)言、JavaScript開(kāi)發(fā);后端使用Java語(yǔ)言開(kāi)發(fā) 融合B/S版電子病歷系統(tǒng)

    大型醫(yī)院云HIS系統(tǒng):采用前后端分離架構(gòu),前端由Angular語(yǔ)言、JavaScript開(kāi)發(fā);后端使用Java語(yǔ)言開(kāi)發(fā) 融合B/S版電子病歷系統(tǒng)

    一套醫(yī)院云his系統(tǒng)源碼 采用前后端分離架構(gòu),前端由Angular語(yǔ)言、JavaScript開(kāi)發(fā);后端使用Java語(yǔ)言開(kāi)發(fā)。融合B/S版電子病歷系統(tǒng),支持電子病歷四級(jí),HIS與電子病歷系統(tǒng)均擁有自主知識(shí)產(chǎn)權(quán)。 文末卡片獲取聯(lián)系! 基于云計(jì)算技術(shù)的B/S架構(gòu)的醫(yī)院管理系統(tǒng)(簡(jiǎn)稱云HIS),采用前后

    2024年02月03日
    瀏覽(31)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包