【正确答案】
A、C
【答案解析】 在Java语言中,使用try/catch/finally对异常进行处理,Java编译器只允许如下三种组合方式:
1)try/catch
2)try/finally
3)try/catch/finally
其中,try块只能有一个,finally块是可选的,最多只能有一个finally块,catch块可以有多个,它们执行的顺序为try->catch->finally,当然,如果没有异常发生,那么catch块是不会执行的;当有多个catch块的时候,如果try块中出现异常,异常是按照catch块的先后顺序进行匹配的,一旦异常类型被一个catch块匹配,则不会与后面的catch块进行匹配:最后,finally块在任何情况下都会执行的,无论有没有发生异常,它总会在这个异常处理结构的最后运行。即使在try块内用return返回了,在返回前,finally总是要执行,以便能够在异常处理最后做一些清理工作,例如关闭数据库连接等。
本题中,对于选项A,通过try/catch可以捕获运行期间出现的错误,进行处理后可以使程序继续运行,因此,是一种积极的异常处理方式。所以,选项A正确。
对于选项B,try后面可以不跟catch,而直接跟finally。所以,选项B错误。
对于选项C,由于catch存在的作用是为了匹配异常类型,所以,catch必须指定异常类型和变量名称。所以,选项C正确。
对于选项D,finally块在任何情况下都会执行。所以,选项D错误。
对于选项E,当需要捕获多种不同类型的异常的时候,传统的写法为:
catch(IOException e1){
}
catch(Exception e2){
}
为了降低代码的重复度,JDK1.7引入了新的写法:如果用一个catch块处理多个异常,可以用管道符(|)将它们分开,即catch(IOException|Exception e){},由此可以看出,“|”前面的异常是不能单独制定变量名的。所以,选项E错误。
所以,本题的答案为AC。