一、什么是异常
解析:异常就是在程序的运行过程中所发生的不正常事件
二、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代码块"); }
四、异常的分类