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