Java菜鸟学习笔记--Exception篇(一):异常简介
什么是异常(Exception)?
简述:
在运行过程中,应用程序可能遭遇各种严重程度不同的问题.异常提供了一种在不弄乱程序的情况下检查错误的巧妙方式.它也提供了一种直接报告错误的机制.
不同类型异常在Java中被封装为不同的类,这也符合我Java里一切都是对象的原则,Java为我们提供了非常完美的异常处理机制。
异常的结构图
既然是类,自然有结构关系,让我们看看这些异常类的结构组成图
JDK文档中的异常类
在JDK文档中,可以查看异常类所有介绍和使用方法
Exception 实例
常见的异常
//2.1算数异常 // System.out.println(8/0);//编译通过 /*运行是输出: Exception in thread "main" java.lang.ArithmeticException: / by zero at me.testexceptions.TestExceptions.main(TestExceptions.java:13) *///抛出java.lang.ArithmeticException异常
int[] a={1,2,3}; // int b=a[3];//编译无错 /* 运行时输出 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at me.testexceptions.TestExceptions.main(TestExceptions.java:25) *///同样是运行时抛出异常 java.lang.ArrayIndexOutOfBoundsException
Java的异常处理机制(try…catch…finally)
try 就像一个网,把try{ }里面的代码所抛出的异常都网住,然后把异常交给 catch{}里面的代码去处理。最后执行finally之中的代码。
无论try中代码有没有异常,也无论catch是否将异常捕获到,finally中的代码都一定会被执行。
try{ int c=9/0; }catch(ArithmeticException my){ //其中my是异常对象,这个形参当系统出现错误抛出异常catch就把异常对象穿过來 System.out.println("出现异常"); //调用my的toString()方法, System.out.println(my);//输出:java.lang.ArithmeticException: / by zero my.printStackTrace(); /*输出: java.lang.ArithmeticException: / by zero at me.testexceptions.TestExceptions.main(TestExceptions.java:35) *///这个方法追踪异常的详细信息 }