一、什么是異常
解析:異常就是在程序的運行過程中所發生的不正常事件
二、Java異常處理是通過5個關鍵字來解決的:try、catch、finally、(前三個是捕獲異常)throw(手動拋出異常)、throws(聲明異常)。
三、1)try-catch塊
public class Text3 {/*** @param args*1、 Java的異常處理是通過五個關鍵字來實現的:* try、catch、finally、throw、throws*2、 e.printStackTrace();//輸出異常的堆棧信息* 3、String getMessage():返回異常信息描述字符串* 字符串描述異常產生的原因是:printStackTrace()輸出信息的一部分* 4、使用Try-catch如果有輸入錯誤那么到哪一行以后忽略其它行直接進入* catch塊中執行*/public static void main(String[] args) {Scanner input=new Scanner(System.in);System.out.println("請輸入被除數:");try {int num=input.nextInt();System.out.println(num);System.out.println("請輸入除數");int num1=input.nextInt();System.out.println(String.format("%d/%d=%d",num,num1,num/num1));System.out.println("感謝使用本程序");} catch (Exception e) {System.err.print("出現錯誤被除數和除數;必須都是整數,"+"除數不能為0");e.printStackTrace();//輸出異常的堆棧信息}
?2)多重catch
package cn.happy.lianxi;import java.util.InputMismatchException; import java.util.Scanner;public class Text5 {/*** @param args* catch(Exception e)--------->排列順序必須是從子類到父類*/ private void mian() {Scanner input=new Scanner(System.in);System.out.println("請輸入被除數:");try {int num=input.nextInt();System.out.println(num);System.out.println("請輸入除數");int num1=input.nextInt();System.out.println(String.format("%d/%d=%d",num,num1,num/num1));System.out.println("感謝使用本程序");}catch(InputMismatchException e){System.out.println("輸入的被除數和除數必須都是整數");}catch(ArithmeticException e){System.out.println("除數不能為零");}catch(Exception e){System.out.println("其它未知異常");}finally{System.out.println("感謝使用本程序");}} }
3)try-catch-finally
package cn.happy.lianxi;public class TText1 {/** System.exit(1); jvm異常退出* System.exit(0); 正常退出* try---catch---finally 捕獲異常* throw 拋出異常* throws 聲明異常* * * * *///聲明異常或者用try---catch public static void main(String[] args) throws Exception {try {int result=5/0;System.out.println(result);} catch (Exception e) {System.out.println("錯誤");}
4)throw----throws
package cn.happy.lianxi;public class ClaTT {//聲明異常public void Cal(int num,int num1) throws Exception{if(num1==0)//拋出異常throw new Exception ("除數不能為0");else{int result=num/num1;System.out.println(result);}}}
?
?
注意點:
1、一般情況下都會走finally塊,只有在如下情況下不會走到
try{ //代碼 }catch(Exception e){System.exit(0); //正常退出 }finally{System.out.print("不會finally代碼塊"); }
四、異常的分類