设计的思考

    技术2022-05-11  62

    设计的思考 设计的模式林林总总,各种教条到处被津津乐道。其中的精髓一眼望去,要么显而易见,要不藏山露水,百思不得其解。 近日的一个任务是完成一个Spring下的异常设计。 要求很简单:设计异常管理框架。 历程:     1,普遍的处理         1.1 异常捕获。利用Jsp2.0规范中的error-page配置,写一个Servlet,该Servlet中,通过                 Throwable exception = (Throwable)httpServletRequest.getAttribute(“javax.servlet.error.exception”);               提取异常对象,然后根据类型分析异常信息(见2)         1.2 异常信息              提取异常的堆栈信息,判断异常类的类型,并国际化.         1.3 异常日志              在异常构造函数中写日志,不显式调用         1.4 通用异常              目的是将checkedException转成uncheckedException,同时构造函数不写两次     2, 基于Spring的异常处理         2.1 由Spring的Servlet配置转发              Spring的MVC学习         2.2 异常信息         2.3 日志             日志分为“异常日志”和“操作日志”。由Log4j配置3个记录器,操作日志记载到JDBC             一个日志工厂,获取单例的异常日志和单例的操作日志         2.4 通用异常             基本同1.4。做了国际化处理,三个构造函数,支持多种异常策略。         2.5 通用异常处理             和通用异常配合,做国际化输出         2.6 国际化             国际化在java代码中获取国际化字符,做为参数传输。中文要转码             国际化时指向国际化的bean配置文件     3. 简约的异常处理         3.1 由Spring的contextloader直接读取国际化文件         3.2 通用异常类的简约             只做异常该做的事情,不去分析异常的类型。             做:记录异常,传递国际化的Key                 3.3 各个类与页面都将功能明确             通用异常类:只负责多层抛和日志             通用异常类的处理页面:国际化             默认异常的处理页面:根据异常得名子获取国际化信息         3.4 国际化信息             异常的类型不做判断,而是将异常得名子做为国际化的Key 总结发展:     从一锅粥变成了2个烤串(为何叫做烤串,我也不知道)         从最开始的想无所不能,变成各自独立,功能清晰。     从到处插手中跳出

    最新回复(0)