1
39
它基本上意味着: 将“SomeExceptionType”捕获到变量“e”中,并承诺在处理异常期间不会将不同的异常分配给“e”。 大多数情况下,这是过度杀戮,好像我正在将异常捕获到一个临时变量名中(e仅对异常处理块有效),我不必严格地控制自己,以免不信任自己将不同的(可能创建的)异常分配给同一个变量名。 也就是说,也许这个区块是由一个由不同想法的人组成的团队维护的,人们只是想非常确定e是最初捕获的例外。 ----根据评注编辑---- 我想不出一个很好的理由来这么做。由于“e”不是成员(静态或其他),编译后类文件不会使用名称“e”。说明这一点的另一种方法是,当您输入JVM字节码的异常处理块时,对象将不会被分配给JVM处理框架可以访问的任何成员名称,它将被推送到线程当前框架的内部处理堆栈。 即使两个线程访问同一个对象,每个线程都有自己的帧,因此编译器从一个帧的内部堆栈中删除的“e”名称不能被另一个线程更改。
这就是为什么
通常被认为是线程安全的,因为它做到了这一点(在伪字节码中)
因为它能做到这一点
后一个字节码很明显,将两个线程交错使用成员x作为中介创建线程间通信,而第一个代码块不能有任何线程间通信,因为没有中介。 |
2
11
现在它意味着
在最近的JDK7构建中,
a Project Coin language change
允许它指示正在进行的隐式静态类型的程度。单身汉
|
3
5
在多重catch子句中
添加
在uni catch子句中
另一方面,异常参数
是
从未
一般来说,使用
|
4
2
这个
这是一个重要的属性,因为对于维护人员来说,这意味着这个特定的变量在使用它的任何地方都将具有这个特定的值,并且不必跟踪它在何处更改。这被认为是非常有用的,以至于Eclipse中的“Clean-up”操作允许在任何可能的地方添加“final”,我相信您看到的是 结果 |
M.Jane · 组织和编写异常类的正确方法 6 年前 |
shubham daharwal · java中的内部捕获异常 6 年前 |
Jon · 如何在不需要任何操作的情况下处理Python异常 6 年前 |
felix1415 · C++捕获(标准::异常和e)与捕获(…) 6 年前 |
k0pernikus · 如何在scala中键入可能引发异常的函数? 6 年前 |