JavaEE日常工作经验总结系列(八)-----Java异常处理

在开发中,异常通常采用诸暨抛出,在controller层进行捕获处理,在处理的时候,通常采用返回前端封装的错误提示,后端打印错误日志。使用的是slf4j日志框架,

使用方法如下

加入Maven依赖

<dependency> 
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.8.0-alpha2</version>
</dependency>

配置log4j

在类路径下创建log4j.properties配置文件,这样log4j会自动加载配置文件。

# rootLogger参数分别为:根Logger级别,输出器stdout,输出器log
log4j.rootLogger = info,stdout,log

# 输出信息到控制台
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d [%-5p] %l %rms: %m%n

# 输出DEBUG级别以上的日志到D://logs/debug.log
log4j.appender.log = org.apache.log4j.DailyRollingFileAppender
log4j.appender.log.DatePattern = '.'yyyy-MM-dd
log4j.appender.log.File = D://debug.log
log4j.appender.log.Encoding = UTF-8
#log4j.appender.log.Threshold = INFO
log4j.appender.log.layout = org.apache.log4j.PatternLayout
log4j.appender.log.layout.ConversionPattern = %d [%-5p] (%c.%t): %m%n

测试代码

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

public class LoggerTest {

    private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

    public static void main(String[] args) {
        logger.info("Current Time: {}", System.currentTimeMillis());
        logger.trace("trace log");
        logger.warn("warn log");
        logger.debug("debug log");
        logger.info("info log");
        logger.error("error log");
    }
}

【强制】应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

处理异常实例

public Object jqLink1e456_onClickServer(Item item) throws FileNotFoundException {
    String wjdz = ArteryParamUtil.getString("CWjdz");
    String wjgs;
    try {
        wjgs = wjdz.substring(wjdz.lastIndexOf("."),wjdz.length()-1);
    } catch (Exception e1) {
        logger.info("获取文件格式出错");
        return MsgUtil.fail();
    }
    String fileType = getFileType(wjgs);
    String wjmc = ArteryParamUtil.getString("CWsmc");
    InputStream inputStream;
    try {
        inputStream = fileSystemService.getFileStream(wjdz);
    } catch (Exception e1) {
        logger.info("获取文件转换为inputStream 出错");
        return MsgUtil.fail();
    }
    HttpServletRequest request = ArteryUtil.getRequest();
    String realPath = request.getSession().getServletContext().getRealPath(CommonConst.DOWNLOADFILE);// arterydownload
    try {
        ArteryFileUtil.saveFileData(inputStream, realPath, wjmc + wjgs);
    } catch (IOException e) {
        logger.info("保存文件到本地出错");
        return MsgUtil.fail();
    }
    finally {
        IOUtils.closeQuietly(inputStream);
    }
    return MsgUtil.success().add("typecode", fileType).add("fileDirectory", CommonConst.DOWNLOADFILE);
}

猜你喜欢

转载自blog.csdn.net/qq_27922023/article/details/80917073