• 项目中java异常处理


    一、java异常类介绍。

    Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。

    有一篇比较好的blog,http://blog.csdn.net/hguisu/article/details/6155636 介绍java异常。

    二、异常处理方式。

    在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常。  

    三、程序中使用。

    2种处理方式
    1、throw new 异常  在方法体上写throws 往上层抛,最终交给Controller AOP处理 处理方式打日志。
    2、明确知道错误的就不使用try..catch..,自己处理 处理方式包括打日志,不往最外层抛。意想不到的异常交给Controller AOP处理。  我个人是这种。

    对象在传入算法处理时 应该是数据验证过的,合法的。所以定义model是要尽可能的简单 明了。“简单” 是跟数量没关系,因为功能单一所以可能model会很多。数据结构定义好,算法实现就规整,就像创建和编辑在一个表单内处理。

    注意:在有spring事务中注意spring事务抛异常,是什么情况才会事务回滚。

    程序中 com.saas.core.config.ControllerLogAop  是最外层 异常处理 在79行。
    try {
                o = joinPoint.proceed();
            } catch (Throwable ex) {
                StringWriter sw = null;
                PrintWriter pw = null;
                try {
                    sw = new StringWriter();
                    pw = new PrintWriter(sw);
                    //将出错的栈信息输出到printWriter中
                    ex.printStackTrace(pw);
                    pw.flush();
                    sw.flush();
                } finally {
                    if (sw != null) {
                        try {
                            sw.close();
                        } catch (IOException e1) {
                            e1.printStackTrace();
                            logger.error("[aop错误捕获流出错]" + e1.getMessage());
                        }
                    }
                    if (pw != null) {
                        pw.close();
                    }
                }
                if (sw != null) {
                    logger.error(sw.toString());
                }
            }

    四、记录日志

    不管复杂还是简单的程序,都是处理数据。处理数据就会有输入数据和输出数据,所以输入和输出的数据需要记录下。

    还有在处理过程中依赖的数据是从别的地方来的,有数据来源,比如来源是数据库,redis,http协议请求等。不可靠的需要记录。

  • 相关阅读:
    AngularJS
    Java
    Java
    AngularJS
    Java
    Java
    AngularJS
    Java
    Debian
    Java
  • 原文地址:https://www.cnblogs.com/chengjunchao/p/7137929.html
Copyright © 2020-2023  润新知