一、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协议请求等。不可靠的需要记录。

项目中java异常处理的更多相关文章

  1. 项目中Java Resources有红叉,其它没有,解决办法

    说起这个这个地方,我课改了好久 起初,我把原先项目的JDK版本改了,右击项目Build Path,然后换掉里面的JRE,没用, 然后右击项目,点击properties,找到在Project Facet ...

  2. Java web项目中java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

    原来是tomcat找不到MYSQL JAR包的问题.后来又把mysql-connector-java-5.1.7-bin.jar导入到tomcat的lib目录下面就ok了,嘿…… 在java项目中,只 ...

  3. WEB 项目中JAVA取得WEBROOT物理路径

    http://wwwzhouhui.iteye.com/blog/504330 ———————————————————————————————————————————————————————————— ...

  4. Maven项目中java类报错-Cannot resolve symbol

    电脑蓝屏了,强制重启之后再打开IDEA里面的项目,所有Java类文件都在报Cannot resolve symbo错误,可以确定所有依赖的包都有引用且jar包没有冲突. 经查询找到这个解决方法: 在I ...

  5. java项目中的异常处理总结

    异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要. 比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异常. 我找一个比较形象 ...

  6. Java项目中的异常处理情况

    1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象 ...

  7. springmvc项目中java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 严重: Error co ...

  8. 实战项目中Java heap space错误的解决

    部标GPS通讯系统在上线之后,经过不断调试,终于稳定运行一段时间,后来又遇到了Java heap space错误异常!日志如下: 说明系统中有未释放的对象.如何找出这些未释放对象以及监控JVM堆内存, ...

  9. JAVA项目中常用的异常处理情况总结

    JAVA项目中常用的异常知识点总结 1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用 ...

随机推荐

  1. 整理对Spark SQL的理解

    Catalyst Catalyst是与Spark解耦的一个独立库,是一个impl-free的运行计划的生成和优化框架. 眼下与Spark Core还是耦合的.对此user邮件组里有人对此提出疑问,见m ...

  2. C++模板实现的AVL树

    1 AVL树的定义 AVL树是一种自平衡二叉排序树.它的特点是不论什么一个节点的左子树高度和右子树的高度差在-1,0,1三者之间. AVL树的不论什么一个子树都是AVL树. 2 AVL树的实现 AVL ...

  3. HashMap底层原理以及与ConCurrentHashMap区别

    HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象.当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bu ...

  4. 二阶段 三阶段 提交 Paxos

    关于分布式事务.两阶段提交协议.三阶提交协议 - 文章 - 伯乐在线 http://blog.jobbole.com/95632/

  5. HTML——使用表格进行页面布局

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. gitbash使用

    gitbash是什么 git bash是Windows下的命令行工具. 基于msys GNU环境,有git分布式版本控制工具. 主要用于git版本控制,上传下载项目代码. GNU环境,就是说如果你喜欢 ...

  7. 从零开始徒手撸一个vue的toast弹窗组件

    相信普通的vue组件大家都会写,定义 -> 引入 -> 注册 -> 使用,行云流水,一气呵成,但是如果我们今天是要自定义一个弹窗组件呢? 首先,我们来分析一下弹窗组件的特性(需求): ...

  8. JavaScript 检查 email 地址的正则表达式

    JavaScript 检查 email 地址的正则表达式​1.代码(1)<html><head><title>Checking an email address - ...

  9. BestCoder5 1001 Poor Hanamichi(hdu 4956) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956(它放在题库后面的格式有一点点问题啦,所以就把它粘下来,方便读者观看) 题目意思:给出一个范围 [ ...

  10. (转)Vim十大必备插件

    原文地址:http://www.open-open.com/lib/view/open1414227253419.html Vim十大必备插件 Taglist taglist是一个用于显示定位程序中各 ...