Java自定義異常簡單示例
前言
如果程序出現(xiàn)了問題,我們沒有做任何處理,最終JVM 會做默認的處理,處理方式有如下兩個步驟:把異常的名稱,錯誤原因及異常出現(xiàn)的位置等信息輸出在了控制臺程序停止執(zhí)行。
- 程序從 try 里面的代碼開始執(zhí)行
- 出現(xiàn)異常,就會跳轉(zhuǎn)到對應(yīng)的 catch 里面去執(zhí)行
- 執(zhí)行完畢之后,程序還可以繼續(xù)往下執(zhí)行
一、異常分為哪幾種?
異常分為兩種,分別是編譯異常和運行時異常。
編譯時異常
- 都是Exception類及其子類
- 必須顯示處理,否則程序就會發(fā)生錯誤,無法通過編譯
運行時異常
- 都是RuntimeException類及其子類
- 無需顯示處理,也可以和編譯時異常一樣處理
package com.xxgc.chop5_2.test;
public class ExceptionDemo {
public static void show4(){
//把字符串轉(zhuǎn)換int類型
String a="張三";
int b=Integer.parseInt(a);//NumberF
}
//異常拋出
public static void show3() throws ClassNotFoundException {
Class.forName("Student");
}
public static void show2(){
//運行時異常:程序運行的時候出現(xiàn)的異常,可以try
//編譯時異常(非運行時異常):必須try catch 或者向上拋出
try {
Class.forName("Student");
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
public static void show() {
//制造一個異常,捕獲異常,處理異常
try{
int []nums={1,2};
int n=10/0;
int a=nums[3];
}catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
System.out.println("數(shù)組下標(biāo)出錯了");
}catch (Exception e){
e.printStackTrace();
System.out.println("出錯了");
}finally {
//最終最后都要之心的代碼,一般完成資源釋放工作
System.out.println("最終的?。?!");
}
}
public static void main(String[] args) {
//trows:向上拋出異常,拋給方法的調(diào)用者
//show3()方法向上拋出了異常,需要main方法解決
//1.main方法解決了
//2.main沒解決完,繼續(xù)向上拋,jvm(Java虛擬機)解決
try {
show3();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}二、自定義異常
1.首先新建一個類
這個類是自定義異常的類,首先我們進行繼承idea的RuntimeException,其次建立有參和無參的方法。
代碼如下(示例):
package com.xxgc.ch06.po;
public class MyException extends RuntimeException{
public MyException(){
}
public MyException(String s){
super(s);
}
}2.測試類
下面新建一個測試類,main方法和shou方法。在shou方法里定義一個int類型的a,進入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("出錯啦!"+e.getMessage());
}
}
System.out.println("扶蘇");
}
public static void main(String[] args) {
show();
}
}該處使用的idea軟件。
總結(jié)
這里對文章進行總結(jié):
以上就是今天要講的內(nèi)容,Java自定義異常需要新建一個類寫入有參無參方法,此類需要繼承idea的RuntimeException異常。下面就需要進行測試是否會顯示。
以下為運行結(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)
出錯啦!不能大于10
扶蘇
進程已結(jié)束,退出代碼0
到此這篇關(guān)于Java自定義異的文章就介紹到這了,更多相關(guān)Java自定義異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ IDEA2019實現(xiàn)Web項目創(chuàng)建示例
這篇文章主要介紹了IntelliJ IDEA2019實現(xiàn)Web項目創(chuàng)建示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
解決spring 處理request.getInputStream()輸入流只能讀取一次問題
這篇文章主要介紹了解決spring 處理request.getInputStream()輸入流只能讀取一次問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
詳解RabbitMQ中延遲隊列結(jié)合業(yè)務(wù)場景的使用
這篇文章主要介紹了詳解RabbitMQ中延遲隊列結(jié)合業(yè)務(wù)場景的使用,延遲隊列中的元素都是帶有時間屬性的,延遲隊列就是用來存放需要在指定時間被處理的元素的隊列,需要的朋友可以參考下2023-05-05
Java使用easyExcel實現(xiàn)導(dǎo)入功能
這篇文章介紹了Java使用easyExcel實現(xiàn)導(dǎo)入功能的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10
Springboot下RedisTemplate的兩種序列化方式實例詳解
這篇文章主要介紹了Springboot下RedisTemplate的兩種序列化方式,通過定義一個配置類,自定義RedisTemplate的序列化方式,結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09
SpringBoot實現(xiàn)固定和動態(tài)定時任務(wù)的三種方法
定時器是我們項目中經(jīng)常會用到的,本文主要介紹了SpringBoot實現(xiàn)固定和動態(tài)定時任務(wù)的三種方法,具有一定的參考價值,感興趣的可以了解一下2023-09-09
Spring事件監(jiān)聽器@EventListener與publishEvent的使用
Spring可以通過事件監(jiān)聽器機制來處理應(yīng)用程序中的事件,本文主要介紹了Spring事件監(jiān)聽器@EventListener與publishEvent的使用,具有一定的參考價值,感興趣的可以了解一下2024-06-06

