1、異常體系結構:
1.1:定義:
程序在運行期間發(fā)生的不正常的情況稱(chēng)之為異常。
1.2:jvm解決異常的方式:
1、終止正在運行程序
2、輸出當前異常信息
a、異常的類(lèi)型 (jdk內部維護了當前異常的一個(gè)對象 用當前對象來(lái)描述當前出現的異常)
b、異常的原因
c、異??赡艹霈F的行數
1.3:程序出現異常列子:
package com.shsxt.exception;
import java.util.Scanner;
/*
* 用戶(hù)輸入兩個(gè)數 求兩個(gè)數的商
* java.util.InputMismatchException
*
*
*/
public class Test02 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("請輸入被除數---->");
int num1 = input.nextInt();
System.out.println("請輸入除數---->");
//關(guān)閉當前的Scanner
input.close();
int num2 = input.nextInt();
System.out.println(num1+"/"+num2+"="+(num1/num2));
}
}
報錯信息:
二、通過(guò)業(yè)務(wù)邏輯解決異常的方式:
package com.shsxt.exception;
import java.util.Scanner;
/*
* 手動(dòng)解決異常問(wèn)題
*
* 通過(guò)大量的if判斷解決程序在執行過(guò)程中可能出現的異常情況。
* 優(yōu)勢:確實(shí)可以將異常信息不交由jvm解決 顯示更友好的提示信息
* 劣勢:編寫(xiě)的代碼量太大了 而且后期不利于維護 并且程序員永遠不知道用戶(hù)有哪些輸入
*
*
*
*
*/
public class Test03 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("請輸入被除數---->");
//判定一次用戶(hù)輸入的值是不是我們需要的
if(input.hasNextInt()){//下一次獲取到的值是否是一個(gè)int值 如果是返回true 如果不是返回fasle
int num1 = input.nextInt();
System.out.println("請輸入除數---->");
//判定用戶(hù)輸入
if(input.hasNextInt()){
int num2 = input.nextInt();
if(num2!=0){
System.out.println(num1+"/"+num2+"="+(num1/num2));
}else{
System.out.println("除數不能為0");
}
}else{
System.out.println("用戶(hù)輸入除數有誤");
}
}else{
System.out.println("用戶(hù)輸入逇被除數有誤");
}
}
}
PS:注意:
通過(guò)大量的if判斷解決程序在執行過(guò)程中可能出現的異常情況。
* 優(yōu)勢:確實(shí)可以將異常信息不交由jvm解決 顯示更友好的提示信息
* 劣勢:編寫(xiě)的代碼量太大了 而且后期不利于維護 并且程序員永遠不知道用戶(hù)有哪些輸入
更多關(guān)于java異常情況及處理機制,請閱讀上海尚學(xué)堂《
java異常與其處理機制》