java—如何获取引发异常的方法名?

tvz2xvvm  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(424)

很难说出这里要问什么。这个问题模棱两可,含糊不清,不完整,过于宽泛,或者是修辞性的,不能以现在的形式得到合理的回答。有关澄清此问题以便重新打开的帮助,请访问帮助中心。
7年前关门了。
我需要获取引发异常的类名和方法名。我该怎么做?提前谢谢。
我的代码:

  1. private void setErrorDetails(final Throwable cause) {
  2. for (final StackTraceElement ste : cause.getStackTrace()) {
  3. System.out.println(ste.getClassName());
  4. System.out.println(ste.getMethodName());
  5. }
  6. }

通过这段代码,我可以得到类名和方法名的列表。除此之外,如何获得引发异常的方法和类名
我也试过这个。

  1. final StackTraceElement[] stackTrace = cause.getStackTrace();
  2. if ((stackTrace != null) && (stackTrace.length > 1)) {
  3. final StackTraceElement stElement = stackTrace[0];
  4. this.className = stElement.getClassName();
  5. this.methodName = stElement.getMethodName();}

这是打印的堆栈跟踪。

  1. 16:01:24,093 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.ejb.Ejb3Configuration$Ejb3EntityNotFoundDelegate>>>Ejb3Configuration.java
  2. 16:01:24,094 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.event.internal.DefaultLoadEventListener>>>DefaultLoadEventListener.java
  3. 16:01:24,095 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.event.internal.DefaultLoadEventListener>>>DefaultLoadEventListener.java
  4. 16:01:24,096 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.event.internal.DefaultLoadEventListener>>>DefaultLoadEventListener.java
  5. 16:01:24,097 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.internal.SessionImpl>>>SessionImpl.java
  6. 16:01:24,097 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.internal.SessionImpl>>>SessionImpl.java
  7. 16:01:24,098 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.type.EntityType>>>EntityType.java
  8. 16:01:24,099 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.type.EntityType>>>EntityType.java
  9. 16:01:24,099 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.engine.internal.TwoPhaseLoad>>>TwoPhaseLoad.java
  10. 16:01:24,100 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java
  11. 16:01:24,101 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java
  12. 16:01:24,101 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java
  13. 16:01:24,102 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java
  14. 16:01:24,103 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java
  15. 16:01:24,103 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java
  16. 16:01:24,104 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java
  17. 16:01:24,104 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.hql.QueryLoader>>>QueryLoader.java
  18. 16:01:24,105 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.hql.internal.ast.QueryTranslatorImpl>>>QueryTranslatorImpl.java
  19. 16:01:24,106 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.engine.query.spi.HQLQueryPlan>>>HQLQueryPlan.java
  20. 16:01:24,107 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.internal.SessionImpl>>>SessionImpl.java
  21. 16:01:24,107 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.internal.QueryImpl>>>QueryImpl.java
  22. 16:01:24,108 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.ejb.QueryImpl>>>QueryImpl.java
  23. 16:01:24,109 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.jboss.as.jpa.container.QueryNonTxInvocationDetacher>>>QueryNonTxInvocationDetacher.java
  24. 16:01:24,109 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.cgi.hix.planmanagement.portal.PortalHomeDA>>>PortalHomeDA.java
  25. 16:01:24,110 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.cgi.hix.planmanagement.portal.PortalHomeAction>>>PortalHomeAction.java
  26. 16:01:24,111 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????sun.reflect.NativeMethodAccessorImpl>>>NativeMethodAccessorImpl.java
  27. 16:01:24,112 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????sun.reflect.NativeMethodAccessorImpl>>>NativeMethodAccessorImpl.java
  28. 16:01:24,112 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????sun.reflect.DelegatingMethodAccessorImpl>>>DelegatingMethodAccessorImpl.java
  29. 16:01:24,113 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????java.lang.reflect.Method>>>Method.java
  30. 16:01:24,114 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  31. 16:01:24,115 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  32. 16:01:24,115 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  33. 16:01:24,116 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor>>>ExceptionMappingInterceptor.java
  34. 16:01:24,117 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  35. 16:01:24,118 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.validator.ValidationInterceptor>>>ValidationInterceptor.java
  36. 16:01:24,119 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor>>>AnnotationValidationInterceptor.java
  37. 16:01:24,120 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java
  38. 16:01:24,121 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  39. 16:01:24,121 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.softwareforge.struts2.breadcrumb.BreadCrumbInterceptor>>>BreadCrumbInterceptor.java
  40. 16:01:24,122 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  41. 16:01:24,123 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.cgi.hix.framework.audit.AuditManager>>>AuditManager.java
  42. 16:01:24,124 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  43. 16:01:24,125 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.cgi.hix.framework.security.SecurityManager>>>SecurityManager.java
  44. 16:01:24,126 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  45. 16:01:24,126 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.debugging.DebuggingInterceptor>>>DebuggingInterceptor.java
  46. 16:01:24,127 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  47. 16:01:24,128 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor>>>DefaultWorkflowInterceptor.java
  48. 16:01:24,129 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java
  49. 16:01:24,130 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  50. 16:01:24,131 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.validator.ValidationInterceptor>>>ValidationInterceptor.java
  51. 16:01:24,132 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor>>>AnnotationValidationInterceptor.java
  52. 16:01:24,133 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java
  53. 16:01:24,133 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  54. 16:01:24,134 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor>>>ConversionErrorInterceptor.java
  55. 16:01:24,135 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  56. 16:01:24,136 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ParametersInterceptor>>>ParametersInterceptor.java
  57. 16:01:24,137 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java
  58. 16:01:24,138 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  59. 16:01:24,138 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ParametersInterceptor>>>ParametersInterceptor.java
  60. 16:01:24,139 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java
  61. 16:01:24,140 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  62. 16:01:24,141 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.StaticParametersInterceptor>>>StaticParametersInterceptor.java
  63. 16:01:24,142 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  64. 16:01:24,142 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.MultiselectInterceptor>>>MultiselectInterceptor.java
  65. 16:01:24,143 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  66. 16:01:24,144 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.CheckboxInterceptor>>>CheckboxInterceptor.java
  67. 16:01:24,145 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  68. 16:01:24,146 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.FileUploadInterceptor>>>FileUploadInterceptor.java
  69. 16:01:24,147 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  70. 16:01:24,147 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor>>>ModelDrivenInterceptor.java
  71. 16:01:24,148 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  72. 16:01:24,149 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor>>>ScopedModelDrivenInterceptor.java
  73. 16:01:24,150 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  74. 16:01:24,151 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ChainingInterceptor>>>ChainingInterceptor.java
  75. 16:01:24,151 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  76. 16:01:24,152 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.PrepareInterceptor>>>PrepareInterceptor.java
  77. 16:01:24,153 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java
  78. 16:01:24,154 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  79. 16:01:24,155 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.I18nInterceptor>>>I18nInterceptor.java
  80. 16:01:24,155 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  81. 16:01:24,156 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.ServletConfigInterceptor>>>ServletConfigInterceptor.java
  82. 16:01:24,157 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  83. 16:01:24,158 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.AliasInterceptor>>>AliasInterceptor.java
  84. 16:01:24,158 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  85. 16:01:24,159 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor>>>ExceptionMappingInterceptor.java
  86. 16:01:24,160 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java
  87. 16:01:24,161 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.impl.StrutsActionProxy>>>StrutsActionProxy.java
  88. 16:01:24,162 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.dispatcher.Dispatcher>>>Dispatcher.java
  89. 16:01:24,162 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.dispatcher.ng.ExecuteOperations>>>ExecuteOperations.java
  90. 16:01:24,163 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter>>>StrutsPrepareAndExecuteFilter.java
  91. 16:01:24,164 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.ApplicationFilterChain>>>ApplicationFilterChain.java
  92. 16:01:24,165 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.ApplicationFilterChain>>>ApplicationFilterChain.java
  93. 16:01:24,166 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.StandardWrapperValve>>>StandardWrapperValve.java
  94. 16:01:24,167 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.StandardContextValve>>>StandardContextValve.java
  95. 16:01:24,167 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve>>>WebNonTxEmCloserValve.java
  96. 16:01:24,168 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.jboss.as.web.security.SecurityContextAssociationValve>>>SecurityContextAssociationValve.java
  97. 16:01:24,169 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.StandardHostValve>>>StandardHostValve.java
  98. 16:01:24,170 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.valves.ErrorReportValve>>>ErrorReportValve.java
  99. 16:01:24,170 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.StandardEngineValve>>>StandardEngineValve.java
  100. 16:01:24,171 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.connector.CoyoteAdapter>>>CoyoteAdapter.java
  101. 16:01:24,172 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.coyote.http11.Http11Processor>>>Http11Processor.java
  102. 16:01:24,173 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler>>>Http11Protocol.java
  103. 16:01:24,173 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.tomcat.util.net.JIoEndpoint$Worker>>>JIoEndpoint.java
  104. 16:01:24,174 INFO [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????java.lang.Thread>>>Thread.java

我已经打印了堆栈跟踪。我要接电话16:01:24110。

y0u0uwnf

y0u0uwnf1#

本文展示了如何使用logback过滤掉不希望在日志中的堆栈跟踪中看到的包。
同样的原则也应该应用在java代码中,您只需要在类名上构造过滤器。

fzsnzjdm

fzsnzjdm2#

实际引发初始异常的方法是堆栈跟踪的根本原因中的第一个元素:

  1. private void setErrorDetails(final Throwable cause)
  2. {
  3. Throwable rootCause = cause;
  4. while(rootCause.getCause() != null && rootCause.getCause() != rootCause)
  5. rootCause = rootCause.getCause();
  6. System.out.println(rootCause.getStackTrace()[0].getClassName());
  7. System.out.println(rootCause.getStackTrace()[0].getMethodName());
  8. }
  9. }

相关问题