0 0

怎样让struts2打印错误堆栈?15

使用struts2时,如果dao部分产生错误,错误堆栈不是在Eclipse的控制台窗口打印,而是在struts2自定义的错误页面显示。(struts.devMode=true)
如何设置让它在Eclipse的控制台窗口打印,这样可以快速定位。

以上这个不是主要问题,更严重的是在调用了自己写的拦截器后,
dao中的错误会被包装,然后根本不打印错误信息
只会在拦截器的  return invocation.invoke(); 语句报空指针异常,这样根本就无法定位错误的位置
怎样设置能让它打印出所有的原始错误堆栈呢

问题补充:
xiaolongfeixiang 写道
struts.devMode=false

并且在Interceptor Stack的配置中,去掉 ExceptionInterceptor。

(不建议这样做。)

ExceptionInterceptor主要是什么作用,能说下为什么不建议去掉么,或者资料
开发时去掉,部署时加上可以吧

问题补充:
xiaolongfeixiang 写道
ExceptionInterceptor默认位于defaultStack的顶部,它能够捕捉到后续所有的异常,然后根据你的Sturts的配置文件,找到与 该类型的Exception匹配的result,然后转向到这个result。

是一项很好的功能,所以不建议去掉!

参考官方文档:

http://struts.apache.org/2.1.8.1/docs/exception-interceptor.html

谢谢,这个刚才看了一下,如果想让它打印所有捕捉到的错误的堆栈信息,就是设置logEnabled 这个参数吧,这个怎么设置?
2010年5月11日 08:56

4个答案 按时间排序 按投票排序

0 0

采纳的答案

<action name="myAction" class="myActionClass">
  <interceptor-ref name="defaultStack">
    <param name="exception.logEnabled">true</param>
  </interceptor-ref>
</action>

2010年5月11日 09:26
0 0

自定义拦截器堆栈(如下代码)。这样定义自己的堆栈后,在action中使用自己的拦截器堆栈myStack

<interceptor-stack name="myStack">
   <interceptor-ref name="alias" /> 
  <interceptor-ref name="servletConfig" /> 
  <interceptor-ref name="prepare" /> 
  <interceptor-ref name="i18n" /> 
  <interceptor-ref name="chain" /> 
  <interceptor-ref name="debugging" /> 
  <interceptor-ref name="profiling" /> 
  <interceptor-ref name="scopedModelDriven" /> 
  <interceptor-ref name="modelDriven" /> 
  <interceptor-ref name="fileUpload" /> 
  <interceptor-ref name="checkbox" /> 
  <interceptor-ref name="staticParams" /> 
 <interceptor-ref name="params">
  <param name="excludeParams">dojo\..*</param> 
  </interceptor-ref>
  <interceptor-ref name="conversionError" /> 
<interceptor-ref name="validation">
  <param name="excludeMethods">input,back,cancel,browse</param> 
  </interceptor-ref>
 <interceptor-ref name="workflow">
  <param name="excludeMethods">input,back,cancel,browse</param> 
  </interceptor-ref>
  </interceptor-stack>

=======================
解释下:上面是将默认拦截器堆栈defaultStack里的 <interceptor-ref name="exception" /> 拦截器去掉。

这样所有的异常在Eclipse控制台显示。

2010年5月11日 09:48
0 0

ExceptionInterceptor默认位于defaultStack的顶部,它能够捕捉到后续所有的异常,然后根据你的Sturts的配置文件,找到与 该类型的Exception匹配的result,然后转向到这个result。

是一项很好的功能,所以不建议去掉!

参考官方文档:

http://struts.apache.org/2.1.8.1/docs/exception-interceptor.html

2010年5月11日 09:12
0 0

struts.devMode=false

并且在Interceptor Stack的配置中,去掉 ExceptionInterceptor。

(不建议这样做。)

2010年5月11日 08:59

相关推荐

    struts2+spring3配置常见问题

    本文主要描述在配置过程中出现的一些问题,并没有详细描述如何配置,其相关步骤请自行查阅。本文主要讲解如下几个问题: 将struts.xml文件放到指定位置; 包含多个struts-XX.xml文件;...struts2打印错误堆栈;

    struts1.2 上传,下载

    6. **异常处理**:虽然代码中只打印了`FileNotFoundException`和`UnsupportedEncodingException`的堆栈跟踪,但在实际应用中,应根据错误情况提供更适当的错误处理和反馈。 总的来说,Struts1.2中的文件下载功能...

    JAVA错误文档[归纳].pdf

    这是一个运行时错误,表示Java堆栈溢出,通常是由于无限递归或大量方法调用导致。审查代码,找出导致无限循环或深度递归的部分进行优化。 7. **Action的返回方法出错,could not initialize proxy - no Session** ...

    自己做的添加过滤器笔记

    二是捕获可能抛出的异常,虽然这里只是简单地打印了堆栈轨迹,但在实际应用中,通常需要更详细的错误处理策略。 接下来,我们需要配置Struts框架以使用我们新创建的过滤器。打开`struts-config.xml`配置文件,在`...

    JAVA范例 四)异常处理---编译时异常、运行时异常

    与编译时异常不同,如果运行时异常未被捕获,程序会立即停止执行,并打印堆栈跟踪信息。 在Java中,异常处理结构主要包括try、catch、finally和throw四个部分。try块用于包含可能抛出异常的代码,catch块用于捕获并...

    JAVA联创面试试题

    2. **Struts的visibility规则和作用域**:Struts是MVC框架,`visiblity`规则指的是ActionForm对象在请求之间的可见性。作用域包括ACTION(仅在当前动作内有效)、SESSION(在整个会话期间有效)和REQUEST(当前请求...

    jquery ajaxfileupload异步上传插件

    如果在上传过程中发生任何异常,会捕获并打印堆栈跟踪,同时将`message`设置为错误信息,以告知前端发生了问题。 6. **返回结果**: 根据文件上传的成功与否,`execute`方法会返回不同的字符串结果,如`"success...

    Java Web项目整体异常处理机制

    直接抛出异常会导致错误信息直接暴露给用户,而仅打印堆栈跟踪至控制台则可能导致用户无法得知发生了什么问题。 正确的做法是在Action层(控制器)尽可能处理异常,并记录日志,同时提供友好的错误提示给用户。例如...

    log4日志j的使用

    DEBUG用于调试,INFO用于常规信息,WARN表示可能的问题,ERROR表示错误,FATAL表示严重错误。通常,开发阶段使用DEBUG,生产环境中使用INFO或更高级别。 5. **过滤器(Filter)**: 过滤器允许更精细地控制哪些...

    Java实现SqlServer及MySql的备份与还原(经典版).pdf

    如果无法找到相应的驱动类或在连接过程中发生异常,方法会捕获并打印堆栈跟踪。 对于SQL Server的备份,通常使用T-SQL的`BACKUP DATABASE`命令,但在Java中,我们可能需要执行存储过程或者使用一些特定的API。例如...

    JBuilder2006新特性指南.pdf

    - **Struts 开发**:介绍了对 Struts 框架的支持情况。 - **JSP 开发**:提供了 JSP 页面开发的工具和功能。 - **JSP 调试**:增强了 JSP 页面的调试功能。 - **在 JBuilder 中使用 Java Web Start**:介绍了如何...

    java 面试宝典 免费提供

    #### 九、堆栈区别 - **堆**:动态分配内存区域,用于存放对象实例。 - **栈**:用于存储局部变量,遵循先进后出原则。 #### 十、数学函数`Math.round` - `Math.round(11.5)`返回`12`,`Math.round(-11.5)`返回`-11...

Global site tag (gtag.js) - Google Analytics