我希望我能找到更好的标题......无论如何,我得到了这个非常奇怪的行为,程序基本上就是这样做的(没有不必要的细节):
try {
//...does something
HashMap parameterMap = new HashMap();
//Connection setup
try{
//...does something
try {
//...does something
System.out.println("MESSAGE 1");
Report rpt = new gr.modus.ws.sepe.Report(parameterMap, connection);//Here seems to be the problem
} catch( Exception e ) {
System.out.println("MESSAGE 2");
}
System.out.println("MESSAGE 3");
//...does something
}catch(Exception ex){
System.out.println("MESSAGE 4");
}
System.out.println("MESSAGE 5");
} catch (Exception e) {
System.out.println("MESSAGE 6");
e.printStackTrace();
} finally {
try {
System.out.println("FINALLE");
//...does something
} catch (Exception e) {
e.printStackTrace();
}
}
报告构造函数也有非法的异常:
public Report(HashMap map, Connection con) {
System.out.println("INSIDE");
//...does something
}
在开发环境中运行程序时(来自Eclipse,使用WildFly 8),这一切都很好。我明白了:
MESSAGE 1
INSIDER
MESSAGE 3
MESSAGE 5
FINALLE
但是当在生产环境(Weblogic服务器)中运行时,我奇怪地得到了
MESSAGE 1
FINALLE
怎么可能呢?我错过了什么吗?
编辑:日志中没有错误,这些行之间没有任何错误
<Sep 29, 2015 12:43:39 PM EEST> <Notice> <Stdout> <BEA-000000> <MESSAGE 1>
<Sep 29, 2015 12:43:39 PM EEST> <Notice> <Stdout> <BEA-000000> <FINALLE>
答案 0 :(得分:3)
如果你得到一个错误(或Throwable,它是异常和错误的超类),那么catch异常将无法捕获它。
容器服务器日志通常会记录未捕获的Throwable。
答案 1 :(得分:0)
我认为您的代码抛出任何错误,将catch块与Error e放在一起并打印错误消息以查看详细信息。