来自Java 语言规范::
如果 try 块的执行由于抛出值 V 而突然完成,则有一个选择:(SQLException throw in try 子句)
如果 V 的运行时类型是与 try 语句的任何 catch 子句的可捕获异常类兼容的赋值,则选择第一个(最左边)这样的 catch 子句。将值 V 分配给所选 catch 子句的参数,并执行该 catch 子句的 Block。然后有一个选择:
如果 catch 块正常完成,则执行 finally 块。然后有一个选择:
如果 finally 块正常完成,则 try 语句正常完成。
如果 finally 块因为任何原因突然完成,那么 try 语句也会因为同样的原因而突然完成。
如果 catch 块由于原因 R 突然完成,则执行 finally 块。然后有一个选择:(InstantiationException throw)
如果 finally 块正常完成,则 try 语句会因为 R.( System.out.println("This is the finally") )而突然完成
我在每个执行步骤中都用粗体显示了文本。
总结:
- 在您的 try 块中引发 SQLException
- 控制转移到处理 SQLException 的 Catch 子句
- 当您抛出 InstantiationException 时,Catch 子句突然完成
- finally 块是通过打印你的文本来执行的