"最左边"在该定义中意味着什么?

St.*_*rio 4 java exception

JLS在14.20.1说:

如果V的运行时类型是与(§5.2)try语句的任何catch子句的可捕获异常类兼容的赋值,则选择第一个(最左边)这样的catch子句.

什么是最左边的?我们从上到下放置catch子句,例如:

try{ }
catch(IndexOutOfBoundException e){ }
catch(SQLException e){ }
catch(NullPointerException e){ }
//etc
Run Code Online (Sandbox Code Playgroud)

Mar*_*nik 6

这与Java的任何新语言功能无关.

术语"最左边"仅涉及最早发生的捕获条款.将代码描绘为一维标记序列,从左到右延伸.这就是语言分析器看到它的方式.

因此,所有规定都是输入第一个匹配的catch子句.

  • @assylias虽然我写了"picture it",但你真的画了这幅画:) (2认同)