java異常:異常處理--try-catch結(jié)構(gòu)詳解



從鍵盤接收兩個(gè)整數(shù),輸出兩數(shù)的商:
package java_exception;
import java.util.Scanner;
public class TryDemoOne {
public static void main(String[] args) {
//定義兩個(gè)整數(shù),鍵盤輸入兩個(gè)整數(shù),輸出兩數(shù)之商
Scanner input = new Scanner(System.in);
System.out.println("=====運(yùn)算開始=====");
System.out.print("請(qǐng)輸入第一個(gè)整數(shù):");
int one = input.nextInt();
System.out.print("請(qǐng)輸入第二個(gè)整數(shù):");
int two = input.nextInt();
System.out.println("one和two的商為:"+ (one/two));
System.out.println("=====運(yùn)算結(jié)束=====");
}
}
若此時(shí)將0或字母作為除數(shù),程序必然會(huì)報(bào)錯(cuò)。
為了處理這種錯(cuò)誤的發(fā)生,可以引入try-catch來避免程序報(bào)錯(cuò)而終止運(yùn)行。
在可能出現(xiàn)異常的位置引入try-catch結(jié)構(gòu),當(dāng)程序某一句發(fā)生錯(cuò)誤,就會(huì)輸出catch中自己設(shè)置的報(bào)錯(cuò)內(nèi)容(程序出現(xiàn)錯(cuò)誤?。渲?code> e.printStackTrace();語句會(huì)打印出錯(cuò)的詳情信息,在終端打印的位置隨機(jī),若沒有該語句,就只會(huì)輸出自己設(shè)置的報(bào)錯(cuò)內(nèi)容,程序正常運(yùn)行。:
try{
System.out.print("請(qǐng)輸入第一個(gè)整數(shù):");
int one = input.nextInt();
System.out.print("請(qǐng)輸入第二個(gè)整數(shù):");
int two = input.nextInt();
System.out.println("one和two的商為:"+ (one/two));
}catch(Exception e){
System.out.println("程序出現(xiàn)錯(cuò)誤!");
e.printStackTrace(); //打印出錯(cuò)的詳情信息,在終端打印的位置隨機(jī)
}
輸出:
1.輸入兩個(gè)整數(shù)
=====運(yùn)算開始=====
請(qǐng)輸入第一個(gè)整數(shù):15
請(qǐng)輸入第二個(gè)整數(shù):5
one和two的商為:3
=====運(yùn)算結(jié)束=====
2.將字母a作為除數(shù)輸入
=====運(yùn)算開始=====
請(qǐng)輸入第一個(gè)整數(shù):15
請(qǐng)輸入第二個(gè)整數(shù):s
程序出現(xiàn)錯(cuò)誤!
java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at java_exception.TryDemoOne.main(TryDemoOne.java:21)
=====運(yùn)算結(jié)束=====
3.將0作為除數(shù)輸入
=====運(yùn)算開始=====
請(qǐng)輸入第一個(gè)整數(shù):15
請(qǐng)輸入第二個(gè)整數(shù):0
程序出現(xiàn)錯(cuò)誤!
java.lang.ArithmeticException: / by zero
at java_exception.TryDemoOne.main(TryDemoOne.java:22)
=====運(yùn)算結(jié)束=====
如果要保證在catch包含的語句之后的結(jié)果正常輸出,可以加上finally:
try{
System.out.print("請(qǐng)輸入第一個(gè)整數(shù):");
int one = input.nextInt();
System.out.print("請(qǐng)輸入第二個(gè)整數(shù):");
int two = input.nextInt();
System.out.println("one和two的商為:"+ (one/two));
}catch(Exception e){
System.out.println("程序出現(xiàn)錯(cuò)誤!");
e.printStackTrace(); //打印出錯(cuò)的詳情信息,在終端打印的位置隨機(jī)
}finally{
System.out.println("=====運(yùn)算結(jié)束=====");
}
以上就是try-catch-finally的完整組合了,try負(fù)責(zé)拋出異常,catch負(fù)責(zé)捕獲異常,finally負(fù)責(zé)無論怎樣都會(huì)執(zhí)行。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
MyEclipse去除網(wǎng)上復(fù)制下來的代碼帶有的行號(hào)(正則去除行號(hào))
這篇文章主要介紹了MyEclipse去除網(wǎng)上復(fù)制下來的代碼帶有的行號(hào)(正則去除行號(hào))的相關(guān)資料,需要的朋友可以參考下2017-10-10
智能 AI 代碼生成工具 Cursor 安裝和使用超詳細(xì)教程
Cursor.so 是一個(gè)集成了 GPT-4 的國內(nèi)直接可以訪問的,優(yōu)秀而強(qiáng)大的免費(fèi)代碼生成器,可以幫助你快速編寫、編輯和討論代碼,這篇文章主要介紹了智能 AI 代碼生成工具 Cursor 安裝和使用介紹,需要的朋友可以參考下2023-05-05
Java基礎(chǔ)之Comparable與Comparator概述
這篇文章主要介紹了Java基礎(chǔ)之Comparable與Comparator詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
SpringCloud @RefreshScope刷新機(jī)制深入探究
RefeshScope這個(gè)注解想必大家都用過,在微服務(wù)配置中心的場(chǎng)景下經(jīng)常出現(xiàn),他可以用來刷新Bean中的屬性配置,那大家對(duì)他的實(shí)現(xiàn)原理了解嗎?它為什么可以做到動(dòng)態(tài)刷新呢2023-03-03

