And*_*rew 27 java exception java-7
在Java 7多个分块中,如下所示:
try {
// code that throws exception
} catch (CharacterCodingException | UnknownServiceException ex) {
// handle exception
}
Run Code Online (Sandbox Code Playgroud)
什么是编译时类型ex?它是两个异常类型共同的派生类最多的类吗?在这个例子中,这将是一个IOException.
gus*_*afc 25
是的,类型ex是双方的最具体的超类型CharacterCodingException和UnknownServiceException,这将是IOException.
编辑:直接从马的嘴上http://cr.openjdk.java.net/~darcy/ProjectCoin/ProjectCoin-Documentation-v0.83.html#multi_catch:
非正式地,lub(最小上限)是所讨论类型中最具体的超类型.
irr*_*ble 14
在JSL 7中http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.20-510
§14.20>异常参数的声明类型,表示其类型为与备用D1 |的并集 D2 | ...... | Dn是lub(D1,D2,...,Dn)(§15.12.2.7).
lub()即最小上限的定义非常复杂.幸运的是,我们在这里讨论的类型通常只是Throwable的非泛型子类,并lub()产生最具体的超类.
对于更复杂的情况,请考虑
class E1 extends Exception implements G<A>
class E2 extends Error implements G<B>
lub(E1, E2) = Throwable & G<?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7019 次 |
| 最近记录: |