0

I need to get the class name and the method name from which the exception is thrown. How can I do that? Thanks in advance.

My code:

private void setErrorDetails(final Throwable cause) {
    for (final StackTraceElement ste : cause.getStackTrace()) {
        System.out.println(ste.getClassName()); 
        System.out.println(ste.getMethodName()); 
    }
}

By this code, I am able to get a list of class names and method names.Out of that, how can I get the method and class name which has thrown the exception

I also tried this.

 final StackTraceElement[] stackTrace = cause.getStackTrace();
    if ((stackTrace != null) && (stackTrace.length > 1)) {
                    final StackTraceElement stElement = stackTrace[0];

                    this.className = stElement.getClassName();
                    this.methodName = stElement.getMethodName();}

This is the printed stacktrace.

16:01:24,093 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.ejb.Ejb3Configuration$Ejb3EntityNotFoundDelegate>>>Ejb3Configuration.java

16:01:24,094 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.event.internal.DefaultLoadEventListener>>>DefaultLoadEventListener.java

16:01:24,095 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.event.internal.DefaultLoadEventListener>>>DefaultLoadEventListener.java

16:01:24,096 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.event.internal.DefaultLoadEventListener>>>DefaultLoadEventListener.java

16:01:24,097 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.internal.SessionImpl>>>SessionImpl.java

16:01:24,097 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.internal.SessionImpl>>>SessionImpl.java

16:01:24,098 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.type.EntityType>>>EntityType.java

16:01:24,099 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.type.EntityType>>>EntityType.java

16:01:24,099 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.engine.internal.TwoPhaseLoad>>>TwoPhaseLoad.java

16:01:24,100 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java

16:01:24,101 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java

16:01:24,101 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java

16:01:24,102 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java

16:01:24,103 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java

16:01:24,103 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java

16:01:24,104 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.Loader>>>Loader.java

16:01:24,104 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.loader.hql.QueryLoader>>>QueryLoader.java

16:01:24,105 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.hql.internal.ast.QueryTranslatorImpl>>>QueryTranslatorImpl.java

16:01:24,106 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.engine.query.spi.HQLQueryPlan>>>HQLQueryPlan.java

16:01:24,107 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.internal.SessionImpl>>>SessionImpl.java

16:01:24,107 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.internal.QueryImpl>>>QueryImpl.java

16:01:24,108 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.hibernate.ejb.QueryImpl>>>QueryImpl.java

16:01:24,109 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.jboss.as.jpa.container.QueryNonTxInvocationDetacher>>>QueryNonTxInvocationDetacher.java

16:01:24,109 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.cgi.hix.planmanagement.portal.PortalHomeDA>>>PortalHomeDA.java

16:01:24,110 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.cgi.hix.planmanagement.portal.PortalHomeAction>>>PortalHomeAction.java

16:01:24,111 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????sun.reflect.NativeMethodAccessorImpl>>>NativeMethodAccessorImpl.java

16:01:24,112 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????sun.reflect.NativeMethodAccessorImpl>>>NativeMethodAccessorImpl.java

16:01:24,112 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????sun.reflect.DelegatingMethodAccessorImpl>>>DelegatingMethodAccessorImpl.java

16:01:24,113 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????java.lang.reflect.Method>>>Method.java

16:01:24,114 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,115 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,115 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,116 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor>>>ExceptionMappingInterceptor.java

16:01:24,117 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,118 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.validator.ValidationInterceptor>>>ValidationInterceptor.java

16:01:24,119 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor>>>AnnotationValidationInterceptor.java

16:01:24,120 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java

16:01:24,121 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,121 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.softwareforge.struts2.breadcrumb.BreadCrumbInterceptor>>>BreadCrumbInterceptor.java

16:01:24,122 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,123 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.cgi.hix.framework.audit.AuditManager>>>AuditManager.java

16:01:24,124 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,125 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.cgi.hix.framework.security.SecurityManager>>>SecurityManager.java

16:01:24,126 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,126 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.debugging.DebuggingInterceptor>>>DebuggingInterceptor.java

16:01:24,127 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,128 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor>>>DefaultWorkflowInterceptor.java

16:01:24,129 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java

16:01:24,130 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,131 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.validator.ValidationInterceptor>>>ValidationInterceptor.java

16:01:24,132 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor>>>AnnotationValidationInterceptor.java

16:01:24,133 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java

16:01:24,133 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,134 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor>>>ConversionErrorInterceptor.java

16:01:24,135 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,136 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ParametersInterceptor>>>ParametersInterceptor.java

16:01:24,137 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java

16:01:24,138 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,138 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ParametersInterceptor>>>ParametersInterceptor.java

16:01:24,139 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java

16:01:24,140 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,141 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.StaticParametersInterceptor>>>StaticParametersInterceptor.java

16:01:24,142 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,142 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.MultiselectInterceptor>>>MultiselectInterceptor.java

16:01:24,143 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,144 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.CheckboxInterceptor>>>CheckboxInterceptor.java

16:01:24,145 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,146 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.FileUploadInterceptor>>>FileUploadInterceptor.java

16:01:24,147 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,147 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor>>>ModelDrivenInterceptor.java

16:01:24,148 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,149 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor>>>ScopedModelDrivenInterceptor.java

16:01:24,150 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,151 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ChainingInterceptor>>>ChainingInterceptor.java

16:01:24,151 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,152 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.PrepareInterceptor>>>PrepareInterceptor.java

16:01:24,153 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.MethodFilterInterceptor>>>MethodFilterInterceptor.java

16:01:24,154 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,155 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.I18nInterceptor>>>I18nInterceptor.java

16:01:24,155 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,156 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.interceptor.ServletConfigInterceptor>>>ServletConfigInterceptor.java

16:01:24,157 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,158 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.AliasInterceptor>>>AliasInterceptor.java

16:01:24,158 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,159 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor>>>ExceptionMappingInterceptor.java

16:01:24,160 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????com.opensymphony.xwork2.DefaultActionInvocation>>>DefaultActionInvocation.java

16:01:24,161 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.impl.StrutsActionProxy>>>StrutsActionProxy.java

16:01:24,162 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.dispatcher.Dispatcher>>>Dispatcher.java

16:01:24,162 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.dispatcher.ng.ExecuteOperations>>>ExecuteOperations.java

16:01:24,163 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter>>>StrutsPrepareAndExecuteFilter.java

16:01:24,164 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.ApplicationFilterChain>>>ApplicationFilterChain.java

16:01:24,165 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.ApplicationFilterChain>>>ApplicationFilterChain.java

16:01:24,166 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.StandardWrapperValve>>>StandardWrapperValve.java

16:01:24,167 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.StandardContextValve>>>StandardContextValve.java

16:01:24,167 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve>>>WebNonTxEmCloserValve.java

16:01:24,168 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.jboss.as.web.security.SecurityContextAssociationValve>>>SecurityContextAssociationValve.java

16:01:24,169 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.StandardHostValve>>>StandardHostValve.java

16:01:24,170 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.valves.ErrorReportValve>>>ErrorReportValve.java

16:01:24,170 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.core.StandardEngineValve>>>StandardEngineValve.java

16:01:24,171 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.catalina.connector.CoyoteAdapter>>>CoyoteAdapter.java

16:01:24,172 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.coyote.http11.Http11Processor>>>Http11Processor.java

16:01:24,173 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler>>>Http11Protocol.java

16:01:24,173 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????org.apache.tomcat.util.net.JIoEndpoint$Worker>>>JIoEndpoint.java

16:01:24,174 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) ????????????????????java.lang.Thread>>>Thread.java

I have printed the stack trace. And I need to get the line 16:01:24,110.

mukund
  • 317
  • 5
  • 10
  • 22
  • 3
    *I am getting a lot of class names and method names.* because it is a **stacktrace** . – AllTooSir Jun 06 '13 at 11:21
  • 1
    possible duplicate of [Get the method name and it's contained parameters by parsing the exception](http://stackoverflow.com/questions/4568437/get-the-method-name-and-its-contained-parameters-by-parsing-the-exception) – John B Jun 06 '13 at 11:22
  • arent the stack frames ordered? The exception has been thrown from the topmost one... but the cause is probbably in something in your code in the middle of this list... – V-X Jun 06 '13 at 11:23
  • Actually my question is not about finding a line number. See I have a database and I need to insert the values of the methodname and classname into it. So I need to know the exact methodname and classname. And it is not a duplicate. Please do not judge by yourself. – mukund Jun 06 '13 at 11:26
  • @V-X: yeah. Is there any way to find the exact cause? – mukund Jun 06 '13 at 11:27
  • I can't see a ready way to fetch the full method signature. – Hot Licks Jun 06 '13 at 11:42
  • please define, what is the exact cause? Is that you haven't checked the input, is that there is some failing remote module or is that dumb user doing unsupported actions? – V-X Jun 06 '13 at 11:59
  • just a comment. stack-trace is just extended log information for developer/operator. It's not an information which will tell to the outer parts of the program what happened inside... – V-X Jun 06 '13 at 12:01
  • a comment after your edit (adding the stack trace): Now I think I know what you want to achieve: You want to find the method and class where the exception happened but you only want your own classes and not the ones from 3rd party libraries. You could achieve this by using the answer from Aleksander and change the loop end condition (end if the class is a third party class). But I don't see the reason - it is simply not useful since the error might be in another class - it would be better to store the whole stacktrace so that a human developer is able to understand what happened. – mschenk74 Jun 06 '13 at 13:54

2 Answers2

12

The method that actually threw the initial exception is the first element in the root cause of the stack trace:

private void setErrorDetails(final Throwable cause)
{
     Throwable rootCause = cause;
     while(rootCause.getCause() != null &&  rootCause.getCause() != rootCause)
          rootCause = rootCause.getCause();

    System.out.println(rootCause.getStackTrace()[0].getClassName()); 
    System.out.println(rootCause.getStackTrace()[0].getMethodName()); 
    }
}
mschenk74
  • 3,561
  • 1
  • 21
  • 34
Aleksander Blomskøld
  • 18,374
  • 9
  • 76
  • 82
0

This article shows how you can use LogBack to filter out packages you don't want to see in stack trace in log.

The same principle should apply in your java code, you'll just have to construct filters on class names.

Christopher Yang
  • 3,769
  • 4
  • 30
  • 27