Java自定義異常簡(jiǎn)單示例
前言
如果程序出現(xiàn)了問(wèn)題,我們沒(méi)有做任何處理,最終JVM 會(huì)做默認(rèn)的處理,處理方式有如下兩個(gè)步驟:把異常的名稱(chēng),錯(cuò)誤原因及異常出現(xiàn)的位置等信息輸出在了控制臺(tái)程序停止執(zhí)行。
- 程序從 try 里面的代碼開(kāi)始執(zhí)行
- 出現(xiàn)異常,就會(huì)跳轉(zhuǎn)到對(duì)應(yīng)的 catch 里面去執(zhí)行
- 執(zhí)行完畢之后,程序還可以繼續(xù)往下執(zhí)行
一、異常分為哪幾種?
異常分為兩種,分別是編譯異常和運(yùn)行時(shí)異常。
編譯時(shí)異常
- 都是Exception類(lèi)及其子類(lèi)
- 必須顯示處理,否則程序就會(huì)發(fā)生錯(cuò)誤,無(wú)法通過(guò)編譯
運(yùn)行時(shí)異常
- 都是RuntimeException類(lèi)及其子類(lèi)
- 無(wú)需顯示處理,也可以和編譯時(shí)異常一樣處理
package com.xxgc.chop5_2.test; public class ExceptionDemo { public static void show4(){ //把字符串轉(zhuǎn)換int類(lèi)型 String a="張三"; int b=Integer.parseInt(a);//NumberF } //異常拋出 public static void show3() throws ClassNotFoundException { Class.forName("Student"); } public static void show2(){ //運(yùn)行時(shí)異常:程序運(yùn)行的時(shí)候出現(xiàn)的異常,可以try //編譯時(shí)異常(非運(yùn)行時(shí)異常):必須try catch 或者向上拋出 try { Class.forName("Student"); }catch (ClassNotFoundException e){ e.printStackTrace(); } } public static void show() { //制造一個(gè)異常,捕獲異常,處理異常 try{ int []nums={1,2}; int n=10/0; int a=nums[3]; }catch (ArrayIndexOutOfBoundsException e) { e.printStackTrace(); System.out.println("數(shù)組下標(biāo)出錯(cuò)了"); }catch (Exception e){ e.printStackTrace(); System.out.println("出錯(cuò)了"); }finally { //最終最后都要之心的代碼,一般完成資源釋放工作 System.out.println("最終的?。。?); } } public static void main(String[] args) { //trows:向上拋出異常,拋給方法的調(diào)用者 //show3()方法向上拋出了異常,需要main方法解決 //1.main方法解決了 //2.main沒(méi)解決完,繼續(xù)向上拋,jvm(Java虛擬機(jī))解決 try { show3(); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } }
二、自定義異常
1.首先新建一個(gè)類(lèi)
這個(gè)類(lèi)是自定義異常的類(lèi),首先我們進(jìn)行繼承idea的RuntimeException,其次建立有參和無(wú)參的方法。
代碼如下(示例):
package com.xxgc.ch06.po; public class MyException extends RuntimeException{ public MyException(){ } public MyException(String s){ super(s); } }
2.測(cè)試類(lèi)
下面新建一個(gè)測(cè)試類(lèi),main方法和shou方法。在shou方法里定義一個(gè)int類(lèi)型的a,進(jìn)入if判斷a是否異常。
代碼如下(示例):
package com.xxgc.ch06.test; import com.xxgc.ch06.po.MyException; public class ThrowDemo { public static void show(){ //如果a>10,拋出自己的異常 int a=13; if (a>10){ try { throw new MyException("不能大于10"); }catch (MyException e){ e.printStackTrace(); System.out.println("出錯(cuò)啦!"+e.getMessage()); } } System.out.println("扶蘇"); } public static void main(String[] args) { show(); } }
該處使用的idea軟件。
總結(jié)
這里對(duì)文章進(jìn)行總結(jié):
以上就是今天要講的內(nèi)容,Java自定義異常需要新建一個(gè)類(lèi)寫(xiě)入有參無(wú)參方法,此類(lèi)需要繼承idea的RuntimeException異常。下面就需要進(jìn)行測(cè)試是否會(huì)顯示。
以下為運(yùn)行結(jié)果:
com.xxgc.ch06.po.MyException: 不能大于10
at com.xxgc.ch06.test.ThrowDemo.show(ThrowDemo.java:11)
at com.xxgc.ch06.test.ThrowDemo.main(ThrowDemo.java:23)
出錯(cuò)啦!不能大于10
扶蘇
進(jìn)程已結(jié)束,退出代碼0
到此這篇關(guān)于Java自定義異的文章就介紹到這了,更多相關(guān)Java自定義異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Vert.x Maven插件快速創(chuàng)建項(xiàng)目的方法
這篇文章主要介紹了使用Vert.x Maven插件快速創(chuàng)建項(xiàng)目的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09如何在spring官網(wǎng)查找XML基礎(chǔ)配置文件
這篇文章主要介紹了如何在spring官網(wǎng)查找XML基礎(chǔ)配置文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10web 容器的設(shè)計(jì)如何實(shí)現(xiàn)
這篇文章主要介紹了web 容器的設(shè)計(jì)如何實(shí)現(xiàn)的相關(guān)資料,本文旨在介紹如何設(shè)計(jì)一個(gè)web容器,只探討實(shí)現(xiàn)的思路,并不涉及過(guò)多的具體實(shí)現(xiàn)。把它分解劃分成若干模塊和組件,每個(gè)組件模塊負(fù)責(zé)不同的功能,需要的朋友可以參考下2016-12-12一文搞懂SpringMVC中@InitBinder注解的使用
@InitBinder方法可以注冊(cè)控制器特定的java.bean.PropertyEditor或Spring Converter和 Formatter組件。本文通過(guò)示例為大家詳細(xì)講講@InitBinder注解的使用,需要的可以參考一下2022-06-06最新IntelliJ?IDEA?2022配置?Tomcat?8.5?的詳細(xì)步驟演示
這篇文章主要介紹了IntelliJ?IDEA?2022?詳細(xì)配置?Tomcat?8.5?步驟演示,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08java實(shí)現(xiàn)分布式項(xiàng)目搭建的方法
這篇文章主要介紹了java實(shí)現(xiàn)分布式項(xiàng)目搭建的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04Flask接口如何返回JSON格式數(shù)據(jù)自動(dòng)解析
這篇文章主要介紹了Flask接口如何返回JSON格式數(shù)據(jù)自動(dòng)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11