异常Exception
try{ aa.divide(6,0) //6/0的意思 } catch(Exception e){//e用来接收抛出的异常对象 e.printStackTrace();//可以简单地理解为输出该异常的具体信息 System.out.printf("除零错误"); }
异常不是编译时所出现的错误,Error Excepetion不一样
异常并不能用if else来处理
package testexpect; import java.util.InputMismatchException; import java.util.Scanner; public class TestExpect { public static void main(String[] args) { int i; Scanner sc = new Scanner (System.in);//表示键盘的意思 标准的键盘输入流 try{ i = sc.nextInt(); System.out.printf("%d",i); } catch(InputMismatchException e){ System.out.printf("输入数据不合法,程序被终止!\n"); } } }
异常的处理机制
-
当Java程序运行时出现问题时,系统会自动检测到改错误,并立即生成一个与该错误对应的异常对象
-
然后把异常交给Java虚拟机
-
Java虚拟机会自动寻找相应的处理代码来处理这个异常,如果没有找到,则由Java须以积极做一些简单的处理后,程序被强行终止
-
程序员可以自己编写代码来捕捉可能出现的异常,并编写代码来处理相应的异常
异常的分类
-
Error的系统错误,程序员无法处理这些异常
-
Exception是程序员可以捕获并处理的异常
-
RuntimeException但又不是RuntimeException子类的异常我们都必须捕捉并进行处理
异常处理步骤
try{ 可能出现异常的代码块 } catch (ExpectionName1 e){ 当产生ExpectionName1异常的处理措施 } catch (ExpectionName2 e){ 当产生ExpectionName2异常的处理措施 } ........ finally{ 无论是否捕捉到异常都处理得代码 }
-
finally语句为异常处理提供一个唯一的出口,是得在控制流程转到程序的其他部分以前,能够对程序的状态做统一的管理