企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## **Exception的层次** 所有的异常类是从 java.lang.Exception 类继承的子类。 Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。 Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。 Error 用来指示运行时环境发生的错误。 例如,JVM 内存溢出。一般地,程序不会从错误中恢复。 异常类有两个主要的子类:IOException 类和 RuntimeException 类。 :-: ![](https://img.kancloud.cn/8d/29/8d29ff4ae8208112ddae8835a55fc612_718x458.png) <br> <br> ## **捕获异常** 使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。 try/catch代码块中的代码称为保护代码,使用 try/catch 的语法如下: ~~~ try { // 程序代码 }catch(ExceptionName e1) { //Catch 块 } ~~~ Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。 如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样 <br> <br> ## **异常实例一:** 为防止和处理一个运行时错误,只需要把你所要监控的代码放进一个try块就可以了。紧跟着try块的,包括一个说明你希望捕获的错误类型的catch子句。完成这个任务很简单,下面的程序包含一个处理因为被零除而产生的 ``` package day02try; public class day02Excption { public static void main(String []args){ int a,b; try{ a = 0; b = 50; System.out.println("This will not be printed"); }catch(ArithmeticException e){ // catch divide-by-zero error System.out.println("Division by zero"); } System.out.println("After catch statement"); } } ``` **运行结果:** This will not be printed After catch statement <br> <br> ## **异常实例二:** 下面的例子中声明有四个元素的一个数组,当代码试图访问数组的第五个元素的时候就会抛出一个异常。 ``` package day02try; import org.apache.log4j.Logger; public class day03Exception { public static void main(String [] args){ Logger logger = Logger.getLogger(day03Exception.class); try{ int [] a = new int[4]; logger.info("this is " + a); System.out.println("Access element four" + a[5]); }catch(ArrayIndexOutOfBoundsException e){ logger.info("this is " + e); System.out.println("Exception thrown " + e); } System.out.println("Out of the block"); } } ```