Java程序经过几行代码,最终进入

标签 java exception

我希望我能找到一个更好的标题......无论如何我得到了这个非常奇怪的行为,程序基本上是这样做的(没有不必要的细节):

 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();                
            }
        }

Report 构造函数也有异常:

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

这怎么可能?我错过了什么吗?

  • 如果没有异常(exception),为什么“INSIDER”或“MESSAGE 3”不是 打印?
  • 如果“Report rpt = new ...”行异常 为什么它从未被 catch block 捕获?

编辑:日志中没有错误,两行之间没有任何内容

<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> 

最佳答案

如果你得到一个 Error(或者是 Exception 和 Error 的父类(super class) Throwable),那么 catch Exception 将不会捕获它。

未捕获的 Throwable 通常会被容器服务器日志记录。

关于Java程序经过几行代码,最终进入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32840574/

相关文章:

java - Selenium WebDriver Java - 首次打开页面时出现注册表单

java - 六位数自增字段

java - Spring Jpa save() 从子实体中删除列

java - synchronized 关键字异常安全吗?

java - UML规范: Do I need inheritance?

java - "Trickiness"从 Java 调用 Scala 代码?

java - 捕获并抛出异常 : What happens "under the hood"?

Grails - 为什么 Controller 中抛出的异常不会停止执行,但服务中抛出的异常却会停止执行

c++ - c++ 中深层嵌套函数的单个 catch all 语句?

c# - 来自属性设置函数的 WPF 数据验证