相关疑难解决方法(0)

如何将printStackTrace存储到字符串中

如何获取e.printStackTrace()并将其存储到String变量中?我想使用e.printStackTrace()稍后在我的程序中生成的字符串.

我还是Java的新手,所以我不太熟悉StringWriter,我认为这将是解决方案.或者,如果您有任何其他想法,请告诉我.谢谢

java stack-trace

208
推荐指数
6
解决办法
16万
查看次数

Exception.getMessage()为null

在我的Java代码中,它正在检查!null条件并抛出一个Exception.

例如

try
{
    if (stud.getCall() != null)
        acc.Call = stud.getCall().toString();
    else
        throw new Exception("Data is null");
}
catch (Exception e)
{
    logger.error("Some Error" + e.getMessage());
    throw new Exception("Please check the Manatadatory Field is Missing" + e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)

但在我得到的日志中:

Some Error null
Run Code Online (Sandbox Code Playgroud)

为什么e.getMessage null

java exception

53
推荐指数
4
解决办法
8万
查看次数

printStackTrace()和toString()之间的区别

我很好奇printStackTrace()和toString()之间的区别.乍一看,他们似乎完全一样.

码:

try {
// Some code
} catch (Exception e)
   e.printStackTrace();
   // OR
   e.toString()
}
Run Code Online (Sandbox Code Playgroud)

java

52
推荐指数
3
解决办法
5万
查看次数

堆栈跟踪为字符串

如何在Java中获得完整的异常消息?

我正在创建一个Java应用程序.如果存在运行时异常,则会弹出JDialoga JTextArea.我试图在我的应用程序中生成运行时异常,但显示异常消息的文本区域如下所示:

java.lang.ClassNotFoundException: com.app.Application
Run Code Online (Sandbox Code Playgroud)

但是,我希望我的文本区域显示如下:

在此输入图像描述

这是我的代码的一部分被try和包围catch:

String ex = e.toString();
this.addText(ex);
Run Code Online (Sandbox Code Playgroud)

我试着用e.getLocalizedMessage()e.getMessage(),但这些都不能工作.

java exception

34
推荐指数
3
解决办法
8万
查看次数

不会关闭一个字符串写入器导致泄漏?

我意识到在java中GC最终会清理对象,但是我问是不是关闭你的字符串编写器是不好的做法,目前我这样做:

 private static String processTemplate(final Template template, final Map root) {
        StringWriter writer = new StringWriter();
        try {
            template.process(root, writer);
        } catch (TemplateException e) {
            logger.error(e.getMessage());
        } catch (IOException e) {
            logger.error(e.getMessage());
        }
        finally {

        }

        return writer.toString();
    }
Run Code Online (Sandbox Code Playgroud)

我应该关闭编写器并创建一个像这样的新String:

String result = "";

...

finally {
  result = writer.toString();
  writer.close();
}
Run Code Online (Sandbox Code Playgroud)

这样做更好吗?

java memory-management freemarker stringwriter

33
推荐指数
2
解决办法
1万
查看次数

如何使用logger打印异常?

我有一种情况,我想使用记录器打印catch块中捕获的所有异常.

 try {
        File file = new File("C:\\className").mkdir();
        fh = new FileHandler("C:\\className\\className.log");
        logger.addHandler(fh);
        logger.setUseParentHandlers(false);
        SimpleFormatter formatter = new SimpleFormatter();
        fh.setFormatter(formatter);
    } catch (Exception e) {
        logger.info(e);
    }
Run Code Online (Sandbox Code Playgroud)

我得到错误记录器无法应用 java.io.Exception...

我担心的是,如果我在try块中执行了很多操作,并且只保留一个catch块作为catch(Exception e),那么有没有办法使用logger来打印catch块中捕获的任何异常?注意:我们使用的是java.util.logging.Logger API

java logging exception

19
推荐指数
2
解决办法
9万
查看次数

为什么没有登录异常堆栈跟踪?

我尝试了SLF4J FAQ中的简单示例:

package com.aed.tests.logging;
import org.slf4j.LoggerFactory;

public class TestLogging
{

    public TestLogging()
    {
        // TODO Auto-generated constructor stub
    }

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        String s = "Hello world";
        try
        {
            Integer i = Integer.valueOf(s);
        }
        catch(NumberFormatException e)
        {
            LoggerFactory.getLogger("simplelogger").error("Failed to format {}", s, e);
            LoggerFactory.getLogger("simplelogger").error("Without parametrized string", e);

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

15:33:51,248000000 [SEVERE]simplelogger: Failed to format Hello world 
15:33:51,275000000 [SEVERE]simplelogger: Without parametrized string 
Run Code Online (Sandbox Code Playgroud)

我使用java.util.logging作为日志记录实现,使用以下logging.properties

# Properties file which configures the …
Run Code Online (Sandbox Code Playgroud)

java logging exception slf4j java.util.logging

12
推荐指数
1
解决办法
1万
查看次数

Scala:在我的Scalatra应用程序中打印堆栈跟踪

看起来像是一个相当直接的问题,但是当我触发Scalatra中的顶级错误处理程序时,我想记录堆栈跟踪.我故意在我的一个方法中抛出异常做一些简单的事情:

throw new IllegalArgumentException
Run Code Online (Sandbox Code Playgroud)

在错误处理程序中,代码如下所示:

 error {
  case e => {
    val logger = LoggerFactory.getLogger(getClass)
    logger.info("an exception occurred: " + e.getStackTrace())
    logger.info("the request body is: " + request)
    NotFound("An error occurred, please contact support")
  }
}
Run Code Online (Sandbox Code Playgroud)

错误处理程序本身是Scalatra特定的,但我很确定我正在寻找的答案可以使用任何vanilla Scala技术来解决.在这一点上我能做些什么来抓住堆栈跟踪?我不确定请求是否与错误处理程序在同一个线程上,否则可能会有一些答案.e.getStackTrace()给我[Ljava.lang.StackTraceElement;@1f6b6954

这里打印出堆栈跟踪的最佳方法是什么,以便我可以记录并查看它以修复我可怕代码中的错误?

scala exception-handling scalatra

11
推荐指数
2
解决办法
1万
查看次数

如何使 log4j syslog Appender 在一行中写入堆栈跟踪?

我正在使用 log4j syslog 附加程序,并注意到当发生异常时,附加程序将堆栈跟踪中的每个条目写入新行。

有没有一种方法可以对其进行配置,以便整个堆栈跟踪将作为一行而不是多行?

java log4j syslog

10
推荐指数
2
解决办法
2万
查看次数

仅获取堆栈跟踪的前N行

我有一个Factory方法,它从ID调用返回一个对象.

模拟代码:

public static Object getById(String id) {
    Object o = CRUD.doRecovery(Class, id);
    if(o == null) {
         printLogMessage("recovery by ID returned Null: " + id);
         // would really like to show only a few lines of stack trace.
    }
    return o;
}
Run Code Online (Sandbox Code Playgroud)

如何只显示堆栈跟踪的前N行(所以我知道方法的调用者)而不将整个堆栈跟踪转储到日志上或者必须依赖外部库?

java exception stack-trace

7
推荐指数
2
解决办法
1万
查看次数

在GWT Super Dev模式下调试?

到目前为止,在GWT super dev模式下调试似乎是一个真正的痛苦.如果有任何错误,则没有堆栈跟踪,只是在chrome控制台中给出了一个神秘的消息.有没有办法让所有错误打印堆栈跟踪,比如开发模式?

我相信我已经有源地图,因为如果我在Chrome的开发工具中找到Sources,我可以看到我的java类的源代码.

java debugging gwt source-maps gwt-super-dev-mode

6
推荐指数
1
解决办法
4801
查看次数

如何使用 kotlin.logging 记录堆栈跟踪?

我使用 kotlin.logging 作为应用程序的日志记录框架。

我希望能够以更易读的方式(可能是 JSON 格式)记录堆栈跟踪:

我正在执行以下操作,但会导致非常冗长/不可读的格式:

logger.error("Exception caught in handleIllegalArgumentsException: $e", e.printStackTrace())
Run Code Online (Sandbox Code Playgroud)

仅记录 Throwable 异常时(见下文),它不显示堆栈跟踪:

logger.error("Exception caught in handleIllegalArgumentsException: $e") 
Run Code Online (Sandbox Code Playgroud)

exception kotlin spring-boot

6
推荐指数
3
解决办法
2282
查看次数

配置 Java 安装以仅打印堆栈跟踪的前几行

如何配置默认的 java 堆栈跟踪打印行为,以便只有头部可见?目前我使用2>&1 | heador| less -i并且我发现它不是最佳的。

当遇到未捕获的异常时,Java 会打印 115 行,然后是文本... 102 more。这条痕迹的 99% 到 97% 与我无关。这让前 3 行很有趣。

如何配置 Java 打印 2 行,然后在我的示例中打印... 215 more?

java configuration logging stack-trace

4
推荐指数
1
解决办法
859
查看次数