我在安装了 JavaSE 1.7.0_60 的 MacOS 10.9.5 (Mavericks) 上运行我的 java 应用程序。
我想使用 multi-catch 语句来捕获一些异常......
但是当我尝试运行我的应用程序时,我收到了这样的错误:
Internal Server Error (500) for request GET /tresTest/authenticate
Compilation error (In /app/controllers/TestBoxController.java around line 57)
The file /app/controllers/TestBoxController.java could not be compiled. Error raised is : Syntax error on tokens, delete these tokens
这个错误的原因是这行代码:
try {
class.someMethodTrowingException();
} catch (MyExceptionNo1 | MyExceptionNo2 | MyExceptionNo3 e) {
doSomethigUseful();
}
如果java -version
在我的控制台上输入,我得到了这个结果:
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)
我不明白为什么我会出现这种行为。Java7中允许使用多捕获语句,对吗?
更新 10.15.2014
我知道如果我以这种方式使用 catch 一切都会正常
try {
class.someMethodTrowingException();
} catch (MyExceptionNo1 e1) {
doSomethigUseful();
} catch (MyExceptionNo2 e2) {
doSomethigUseful();
} catch (MyExceptionNo3 e3) {
doSomethigUseful();
}
但我的目标是使用 multi-catch 语句,例如catch (MyExceptionNo1 | MyExceptionNo2 | MyExceptionNo3 e) {...}
看看这个:http ://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html
更新 11.20.2014
发现了问题。即使我告诉它不要使用它,它也是使用 1.6 Java 兼容性的 Play。还不明白为什么,也不明白如何鞋底,但至少我明白问题出在哪里...... :)