Java學習筆記之異常處理
本文實例為大家分享了Java異常處理的具體代碼,供大家參考,具體內(nèi)容如下
一.異常的分類
1.由Java虛擬機拋出的異常(Error):程序無法處理的問題,用戶不用去進行處理(虛擬機錯誤丶內(nèi)存溢出錯誤丶線程死鎖)
2.Exception異常:程序本身可以進行處理的異常
1).非檢查異常(Unchecked Exception):編譯器不需要強制處理的異常(空指針異常丶數(shù)組下標越界異常丶算數(shù)異常丶類型轉(zhuǎn)換異常)
2).檢查異常(checked Exception):編譯器需要強制處理的異常(IOException丶SQLException)
二.異常處理的兩種方法
1.通過try丶catch和finally關(guān)鍵字在當前位置進行異常處理
public static void main(String[] a){
int sum = 0;
while(true){
try { //以兩數(shù)相除除數(shù)不能為0進行舉例
System.out.println("請依次輸入兩個數(shù)值進行除法操作:");
Scanner scanner = new Scanner(System.in);
int one =scanner.nextInt();
int two =scanner.nextInt();
sum = one/two;
System.out.println("最終結(jié)果為:"+sum);
} catch (Exception e) { //用catch將錯誤進行捕捉,這里可以使用多重catch,對于不同的錯誤進行捕捉,但最后的catch建議為Exception。
// TODO Auto-generated catch block //顯示錯誤堆棧信息
e.printStackTrace();
}finally{
System.out.print("無論有沒有錯誤我都會執(zhí)行"); }
}
}
}
輸出:

2.通過try丶catch丶finally丶throw和throws拋出異常給函數(shù)調(diào)用者進行處理
public class Try {
public static void main(String[] a){
try{
Function(); //在函數(shù)調(diào)用者處對異常進行處理
}catch(Exception e)
{
e.printStackTrace();
}
}
static void Function() throws Exception{ //通過throws將異常進行拋出
System.out.println("請輸入一個數(shù)值進行判斷:");
Scanner scanner = new Scanner(System.in);
int one =scanner.nextInt();
if(one<100)
{
throw new Exception(); //若輸入的數(shù)值小于100則拋出異常
}
}
}
輸出:

3.自定義異常進行處理
class MyException extends Exception{ //自定義異常,通過super方法傳遞異常信息給父級
public MyException(){
super("這是我自定義的異常");
}
}
public class Try {
public static void main(String[] a){
try{
Function();
}catch(MyException e)
{
e.printStackTrace();
}
}
static void Function() throws MyException{
System.out.println("請輸入一個數(shù)值進行判斷:");
Scanner scanner = new Scanner(System.in);
int one =scanner.nextInt();
if(one<100)
{
throw new MyException(); //將自定義異常進行拋出
}
}
}
輸出:

三.異常鏈
有的時候我們會在處理一個異常的時候拋出一個新的異常,也就是異常的嵌套,但是最后我們得到的異常信息卻只有一個。
示例:
public class Try {
public static void main(String[] a){
try{
Function1();
}catch(Exception e)
{
e.printStackTrace();
}
}
static void Function1() throws Exception{
try{
Function2();
}catch(Exception e){
throw new Exception();
}
}
static void Function2() throws Exception{
try{
Function3();
}catch(Exception e){
throw new Exception();
}
}
static void Function3() throws Exception{
throw new Exception();
}
}
輸入結(jié)果:

這樣的話顯示出的異常就只有一個了,那我們?nèi)绻胱屵@條異常鏈中的所有異常信息全部輸出該怎么辦呢?方法很簡單,我們在拋出異常的時候?qū)惓ο笠伯斪鲄?shù)進行拋出就行了。
示例:
public class Try {
public static void main(String[] a){
try{
Function1();
}catch(Exception e)
{
e.printStackTrace();
}
}
static void Function1() throws Exception{
try{
Function2();
}catch(Exception e){
throw new Exception("異常2",e);
}
}
static void Function2() throws Exception{
try{
Function3();
}catch(Exception e){
throw new Exception("異常2",e);
}
}
static void Function3() throws Exception{
throw new Exception("異常3");
}
}
運行結(jié)果:

到此,我們Java中的異常便是描述完了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Mybatis單個參數(shù)的if判斷報異常There is no getter for property named ''xxx'' in ''class java.lang.Integer''的解決方案
- 導(dǎo)入項目出現(xiàn)Java多個工程相互引用異常A cycle was detected in the build path of project的解決辦法
- java簡單自定義異常實例代碼
- Java中內(nèi)存區(qū)域的劃分與異常詳解
- Java如何自定義異常打印非堆棧信息詳解
- Java異常處理的五個關(guān)鍵字
- 利用Java8 Optional如何避免空指針異常詳解
- 關(guān)于Java中try finally return語句的執(zhí)行順序淺析
- 簡單談?wù)刯ava的異常處理(Try Catch Finally)
- Java異常處理之try...catch...finally詳解
相關(guān)文章
使用SpringBoot實現(xiàn)自動發(fā)送注冊驗證碼郵件功能
一直以來,我都對程序如何自動發(fā)送郵件感到好奇,想象一下,當你在某個網(wǎng)站注冊時,輸入郵箱后不久就收到一封帶有驗證碼的郵件,這種體驗既方便又高效,所以本文給大家介紹了如何用?Spring?Boot?實現(xiàn)自動發(fā)送注冊驗證碼郵件,需要的朋友可以參考下2025-04-04
java8 stream自定義分組求和并排序的實現(xiàn)
這篇文章主要介紹了java8 stream自定義分組求和并排序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01
JetBrains IntelliJ IDEA 優(yōu)化教超詳細程
這篇文章主要介紹了JetBrains IntelliJ IDEA 優(yōu)化教超詳細程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03

