黑马程序员:JAVA异常处理机制
2012-11-24 13:05
387 查看
------- android培训、java培训、期待与您交流!
----------
一 定义
异常:阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常。绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败。之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意。
记得当初总是搞不太清楚,不知道这个异常是什么意思,为什么会有这个机制?但是随着知识的积累逐渐也对异常有一点感觉了。举一个例子来说明一下异常的用途。
这个类是关于除运算,如果直接返回计算结果,根本不去考虑什么参数是否正确,是否合法会出错。但是我们应尽可能的考虑周全,所以进行参数的合法性检查就很有必要了。其中执行参数检查抛出来的那个参数非法异常,这就属于这个方法的不正常情况。正常情况下我们会正确的使用计算器,但是不排除粗心大意把除数赋值为0。
二 JAVA异常体系
Throwable 类是 Java 语言中所有错误或异常的超类(这就是一切皆可抛的东西)。它有两个子类:Error和Exception。
Error:用于指示合理的应用程序不应该试图捕获的严重问题。这种情况是很大的问题,大到你不能处理了,所以听之任之就行了,你不用管它。比如说VirtualMachineError:当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。好吧,就算这个异常的存在了,那么应该何时,如何处理它呢??交给JVM吧,没有比它更专业的了。
Exception:它指出了合理的应用程序想要捕获的条件。Exception又分为两类:一种是CheckedException,一种是UncheckedException。这两种Exception的区别主要是CheckedException需要用try...catch...显示的捕获,而UncheckedException不需要捕获。通常UncheckedException又叫做RuntimeException。《effective java》指出:对于可恢复的条件使用被检查的异常(CheckedException),对于程序错误(言外之意不可恢复,大错已经酿成)使用运行时异常(RuntimeException)。
我们常见的RuntimeExcepiton有IllegalArgumentException、IllegalStateException、NullPointerException、IndexOutOfBoundsException等等。对于那些CheckedException就不胜枚举了,我们在编写程序过程中try...catch...捕捉的异常都是CheckedException。io包中的IOException及其子类,这些都是CheckedException。
三 异常使用
下面的例子是演示程序出现异常后代码执行流程。
运行结果:
异常出现前
数组越界错误
异常出现后
运行结果:
异常出现前
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Test1.testException2(Test1.java:22)
at Test1.main(Test1.java:27)
----------
一 定义
异常:阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常。绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败。之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意。
记得当初总是搞不太清楚,不知道这个异常是什么意思,为什么会有这个机制?但是随着知识的积累逐渐也对异常有一点感觉了。举一个例子来说明一下异常的用途。
public class Calculator { public int devide(int num1, int num2) { //判断除数是否为0 if(num2 == 0) { throw new IllegalArgumentException("除数不能为零"); } return num1/num2; } public static void main(String[] args) { Calculator c = new Calculator(); System.out.println(c.devide(1, 0)); } }
这个类是关于除运算,如果直接返回计算结果,根本不去考虑什么参数是否正确,是否合法会出错。但是我们应尽可能的考虑周全,所以进行参数的合法性检查就很有必要了。其中执行参数检查抛出来的那个参数非法异常,这就属于这个方法的不正常情况。正常情况下我们会正确的使用计算器,但是不排除粗心大意把除数赋值为0。
二 JAVA异常体系
Throwable 类是 Java 语言中所有错误或异常的超类(这就是一切皆可抛的东西)。它有两个子类:Error和Exception。
Error:用于指示合理的应用程序不应该试图捕获的严重问题。这种情况是很大的问题,大到你不能处理了,所以听之任之就行了,你不用管它。比如说VirtualMachineError:当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。好吧,就算这个异常的存在了,那么应该何时,如何处理它呢??交给JVM吧,没有比它更专业的了。
Exception:它指出了合理的应用程序想要捕获的条件。Exception又分为两类:一种是CheckedException,一种是UncheckedException。这两种Exception的区别主要是CheckedException需要用try...catch...显示的捕获,而UncheckedException不需要捕获。通常UncheckedException又叫做RuntimeException。《effective java》指出:对于可恢复的条件使用被检查的异常(CheckedException),对于程序错误(言外之意不可恢复,大错已经酿成)使用运行时异常(RuntimeException)。
我们常见的RuntimeExcepiton有IllegalArgumentException、IllegalStateException、NullPointerException、IndexOutOfBoundsException等等。对于那些CheckedException就不胜枚举了,我们在编写程序过程中try...catch...捕捉的异常都是CheckedException。io包中的IOException及其子类,这些都是CheckedException。
三 异常使用
下面的例子是演示程序出现异常后代码执行流程。
public class Test1 { public static void testException1() { int[] ints = new int[] { 1, 2, 3, 4 }; System.out.println("异常出现前"); try { System.out.println(ints[4]); System.out.println("???");// 发生异常以后,后面的代码不能被执行 } catch (IndexOutOfBoundsException e) { System.out.println("数组越界错误"); } System.out.println("异常出现后"); } public static void main(String[] args) { Test1.testException1(); } }
运行结果:
异常出现前
数组越界错误
异常出现后
public class Test1 { public static void testException2() { int[] ints = new int[] { 1, 2, 3, 4 }; System.out.println("异常出现前"); System.out.println(ints[4]); System.out.println("???");// 发生异常以后,他后面的代码不能被执行 } public static void main(String[] args) { Test1.testException2(); } }
运行结果:
异常出现前
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Test1.testException2(Test1.java:22)
at Test1.main(Test1.java:27)
相关文章推荐
- 黑马程序员——java异常处理机制
- 黑马程序员-Java异常处理机制
- 黑马程序员_关于java的处理异常机制
- 黑马程序员-Java异常处理机制
- 黑马程序员---java异常处理机制
- 黑马程序员——Java基础:异常处理机制
- 黑马程序员_Java异常处理机制
- 黑马程序员_Java当中异常处理机制2
- 黑马程序员-----java异常处理机制
- 黑马程序员----Java的异常处理机制
- Java异常处理机制
- java中的异常处理机制
- Java异常处理机制的详细讲解和使用技巧
- 深入理解java异常处理机制
- Java程序员从笨鸟到菜鸟之(十二)java异常处理机制
- 深入理解java异常处理机制
- JAVA中的异常处理机制及异常分类
- 黑马程序员_JAVA的异常处理
- 深入理解java异常处理机制