简体   繁体   English

如何在自定义异常中打印堆栈跟踪?

[英]How to print stack trace in custom exception?

I define a custom exception like so : 我定义一个自定义异常,如下所示:

package source.exception;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ValidationException extends Exception
{
    private static final Logger logger = LoggerFactory.getLogger("source.exception.ValidationException");

    public ValidationException(String message)
    {
        super(message);
        ValidationException e = new ValidationException();
        logger.error("Exception : {}" , e);
    }
}

In the main program I use this exception like so : 在主程序中,我使用此异常,如下所示:

public void readFile(String path) throws ValidationException
    {
        logger.debug("Input file path = {}" , path);
        try
        {
            if(validatePath(path))
            {
                mathExpressionReader = new BufferedReader(new FileReader(path));
            }
            else
            {
                throw new ValidationException("Your file dose not exist!");
            }
        }
        catch(Exception ex)
        {
            logger.error("Exception {} has occurred" , ex);
        }
    }

Now I don't know how to print stack trace when validatePath fail(means if statement become false) .Can anyone help me to print stack trace in custom exception? 现在我不知道如何在validatePath失败时打印堆栈跟踪(意味着if语句变为false)。任何人都可以帮我在自定义异常中打印堆栈跟踪吗?

Why not just using e.printStackTrace() ? 为什么不使用e.printStackTrace()

public class ValidationException extends Exception
{
    public ValidationException(String message)
    {
        super(message);
    }
}

public void readFile(String path) throws ValidationException
{
    logger.debug("Input file path = {}" , path);
    try
    {
        if(validatePath(path))
        {
            mathExpressionReader = new BufferedReader(new FileReader(path));
        }
        else
        {
            throw new ValidationException("Your file dose not exist!");
        }
    } catch (ValidationException e) {
        // This will print the stack trace.
        e.printStackTrace();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM