VR开发入门教程34:控制台编程--异常中的Try-Catch来源:m.qikuedu.com
捕捉异常
捕获并处理异常
try {
//接受监视的程序块,在此区域内发生
//的异常,由catch中指定的程序处理;
}
// 不能有其它语句分隔
catch(要处理的异常种类和标识符) {
//处理异常;
}catch(要处理的异常种类和标识符) {
//处理异常;
}
Tty-Catch语句
try语句
捕获例外的第一步就是用try {…}语句指定了一段代码,该段代码就是一次捕获并处理例外的范围。在执行过程中,该段代码可能会产生并抛弃一个或多个例外,因此,它后面的catch语句进行捕获时也要做相应的处理。
如果没有例外产生,所有的catch代码段都被略过不执行。
catch语句
每个try语句必须伴随一个或多个catch语句,用于捕获try代码块所产生的例外并做相应的处理。 catch语句有一个形式参数,用于指明其所能捕获得例外类型,运行时系统通过参数值把被抛弃的例外对象传递给catch语句。
程序设计中要根据具体的情况来选择catch语句的例外处理类型,一般应该按照try代码块中例外可能产生的顺序及其真正类型进行捕获和处理,尽量避免选择最一般的类型作为catch语句中指定要捕获的类型。
当然也可以用一个catch语句处理多个例外类型,这时它的例外类型应该是这多个例外类型的父类,但这种方式使得在程序中不能确切判断例外的具体类型。
注意事项:
1.例外总是由距离产生例外最近的匹配catch代码段处理
2.如果没有相应的例外处理
则例外被交给上一层try代码段进行处理
3.例外处理的查找依据类型匹配原则顺序进行
第一个匹配的例外处理被执行,当例外处理执行完毕,程序接着最后一个catch代码段后的语句执行
4.例外处理的顺序影响到例外的处理
子类例外可被父类例外处理捕获
不要先捕获父类例外,再捕获子类例外
5.如果找不到相应的例外处理
程序将结束程序执行;
6.尽量避免用一般类型作为catch中指定要捕获的类型。一般应该按照try代码块中例外可能产生的顺序及其真正类型进行捕获和处理。
7.在例外处理中无法访问try代码段中声明的变量。因为此时try代码段已经退出了,例外处理所需要的任何信息一般都应该通过例外对象来传递
8.在使用方法时尽量直接处理该方法可能产生的例外,这样你的程序就会更健壮
9.在catch代码段中产生的例外不是由相同try的后续catch代码段处理,而是由包含整个try-catch结构的上层try代码段检测并处理
10.可以把catch到的例外对象再次抛出,使上层try-catch结构继续处理该例外事件;也可以把例外对象转换为其它例外对象…
catch (Exception e) { throw e; }
11.try-catch机制不该被用于流程控制,例外情形应该是很稀少的,而不是经常性的
12.在catch代码段中的return语句用于退出方法,而不是返回到例外抛出点(throw point)