try catch finally throw throws
2014-04-18 17:25
141 查看
try语句
try语句块中可能会抛出异常
catch语句
catch语句的参数必须为throwable的子类,它指明了catch所处理的异常类型,而此异常是运行时在try语句块中生成并捕获的。大括号中可以处理此异常对象。
此外,catch语句可以有多个,分别处理不同的异常,Java运行时系统从上到下分别对每个catch语句处理的例外类型进行检测,直到找到类型相匹配的catch语句为止。这里,类型匹配指catch所处理的例外类型与生成的例外对象的类型完全一致或者是它的父类,因此,catch语句的排列顺序应该是从特殊到一般。
也可以用一个catch语句处理多个例外类型,这时它的例外类型参数应该是这多个例外类型的父类,程序设计中要根据具体的情况来选择catch语句的例外处理类型。
finally语句
try语句块中,当抛出一个异常时,其后的代码将不会被执行到(throw后面的代码将不会被执行),这时可以通过finally语句来制定一段代码,无论try所制定的语句块中是否抛出异常,也无论所抛出的异常是否与catch中的一致,finally中的代码一定会被执行。
throws语句
throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。如果异常的类型是Error或 RuntimeException, 或它们的子类,这个规则不起作用,
因为这在程序的正常部分中是不期待出现的。 如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型。
throw语句
throw总是出现在函数体中,用来抛出一个异常。程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。
由于throw与throws容易混淆,下面对比二者区别:
第一
throws 声明在方法头部
throw用于方法体内部
第二
throws后面是方法可能会抛出的异常类型
throw后面一定是某个异常类型的实例
第三
throws后面可以声明多个一场类型,用逗号隔开
第四
两种都是异常的消极处理方式,不好处理异常,异常的处理交给其调用者处理
第五
重要的一点,throw不可以单独使用,可以与try catch finally或者throws配套使用
而throws当然可以单独使用
小例子:
参考文章:http://liqita.iteye.com/blog/1236362
try语句块中可能会抛出异常
catch语句
catch语句的参数必须为throwable的子类,它指明了catch所处理的异常类型,而此异常是运行时在try语句块中生成并捕获的。大括号中可以处理此异常对象。
此外,catch语句可以有多个,分别处理不同的异常,Java运行时系统从上到下分别对每个catch语句处理的例外类型进行检测,直到找到类型相匹配的catch语句为止。这里,类型匹配指catch所处理的例外类型与生成的例外对象的类型完全一致或者是它的父类,因此,catch语句的排列顺序应该是从特殊到一般。
也可以用一个catch语句处理多个例外类型,这时它的例外类型参数应该是这多个例外类型的父类,程序设计中要根据具体的情况来选择catch语句的例外处理类型。
finally语句
try语句块中,当抛出一个异常时,其后的代码将不会被执行到(throw后面的代码将不会被执行),这时可以通过finally语句来制定一段代码,无论try所制定的语句块中是否抛出异常,也无论所抛出的异常是否与catch中的一致,finally中的代码一定会被执行。
throws语句
throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。如果异常的类型是Error或 RuntimeException, 或它们的子类,这个规则不起作用,
因为这在程序的正常部分中是不期待出现的。 如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型。
throw语句
throw总是出现在函数体中,用来抛出一个异常。程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。
由于throw与throws容易混淆,下面对比二者区别:
第一
throws 声明在方法头部
throw用于方法体内部
第二
throws后面是方法可能会抛出的异常类型
throw后面一定是某个异常类型的实例
第三
throws后面可以声明多个一场类型,用逗号隔开
第四
两种都是异常的消极处理方式,不好处理异常,异常的处理交给其调用者处理
第五
重要的一点,throw不可以单独使用,可以与try catch finally或者throws配套使用
而throws当然可以单独使用
小例子:
package test; public class TestException { public static void main(String args[]) { int a = -1; try { Age age = new Age(); age.testAge(a);// 触发异常 System.out.println("throw 之后的代码"); // 此行代码将不被执行,因为执行了throw } catch (MyException ex) { System.out.println(ex.toString()); } finally { // 无论是否抛出异常,无论catch语句的异常类型是否与抛出的异常类型一致,finally都要执行 System.out.println("finally 被执行"); } } } class MyException extends Exception { String msg; MyException(int age) { msg = "error age !"; } public String toString() { return msg; } } class Age { public void testAge(int n) throws MyException { if (n < 0 || n > 150) { MyException e = new MyException(n); throw e;// throw后面的代码将不被执行 } else { System.out.println("allowed age!"); } } }
参考文章:http://liqita.iteye.com/blog/1236362
相关文章推荐
- JAVA基础再回首(十九)——异常的概述、Try…Catch、多异常处理、Throws、throw、finally、自定义异常及异常的注意事项
- JAVA异常处理关键字:throws,throw,try,catch,finally
- Java异常处理综合例子(try、catch、finally、throws、throw)
- android异常处理——try、catch、finally、throw、throws
- Java异常处理综合例子(try、catch、finally、throws、throw)
- JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
- 5.27 java中try,catch,throw,throws,finally
- Android异常处理——try、catch、finally、throw、throws
- Android异常处理——try、catch、finally、throw、throws
- java个人学习笔记14(Error+Exception+try_catch_finally+throw+throws)
- Java异常之try,catch,finally,throw,throws
- Java异常类简介以及throws,try,catch,throw,finally的区别
- JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
- try...catch...finally;throw与throws关键字联合使用
- 异常(try……catch……finally、throws和throw的区别、自定义异常)
- 转载:Java的异常处理机制:try、catch、finally、throw、throws
- Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用?
- AVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意
- Java中 try--catch-- finally、throw、throws 的用法
- 异常机制 :try、catch、 finally 、throw 、throws