探讨在项目中如何处理错误信息
来源:互联网 发布:知乎led灯化妆镜 编辑:程序博客网 时间:2024/05/16 16:08
一个项目中肯定需要处理各种各样的错误。而对于这些错误,一方面需要程序反应出这些错误并可以让程序员快速地
定位到,另一方面,在发生某些错误时需要给用户适当的错误提示。比如某个请求的方法是
public User getUserInfo(String userId)
此时请求参数userId为null,我在项目中会这么做
public User getUserInfo(String userId){ Assert.notNull(userId, "userId不能为空"); // ..}
并且用一个全局的异常捕捉的类来处理系统中的所有异常,比如Spring
中的HandlerExceptionResolver
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { Map map = new HashMap(); map.put("success", false); map.put("message", ex.getMessage()); try { sendJson(response, Utils.parseJson(map)); } catch (IOException e) { e.printStackTrace(); } return new ModelAndView(); }
这样就可以将错误信息返回给客户端。当然为了更好的支持多国用户,可以考虑对错误信息做国际化处理,这里就不具体展开来讲了。不过这里需要注意的是,不能想当然地使用ResouceBundle
来处理,因为这里需要处理的是客户端用户,而用ResourceBundle
只是根据服务器的语言环境。
对于错误信息的管理,我们还是将其放到配置文件中,这样不仅可以便于修改,并且可以在后期提供国际化。
但是当项目越来越大的时候,把所有类使用的错误信息存储到一个大的属性文件里边将会容易产生维护的噩梦。为了避免这一情况,我们可以借鉴Tomcat中的处理方法:为每个包都分配一个属性文件。例如,在包org.apache.catalina.connector
里边的属性文件包含了该包下所有的类抛出的所有错误信息。每个属性文件都会被一个org.apache.catalina.util.StringManager
类的实例所处理。当Tomcat
运行时,将会有许多StringManager
实例,每个实例会读取包对应的一个属性文件。
当包里边的一个类需要产生一个错误信息时,它首先会获得一个StringManager
实例。不过,相同包里边的其他一些类可能也需要 StringManager
,为每个对象创建一个 StringManager
实例是一种资源浪费。因此,StringManager
类被设计成一个单例 (singleton)类。仅有的一个构造方法是私有的,你不能在类的外部使用 new
关键字来实例化。只能传递一个包名来调用它的公共静态方法getManager
来获得一个实例。每个实例存储在一个以包名为key
的 Hashtable
中。
private static Map<String, StringManager>managers = new HashMap<String, StringManager>();public synchronized static StringManager getManager(String packageName) { StringManager mgr = (StringManager)managers.get(packageName); if (mgr == null) { mgr = new StringManager(packageName); managers.put(packageName, mgr); } return mgr;}
- 探讨在项目中如何处理错误信息
- 在Global中Application_Error事件处理错误信息
- 如何在Web Part 中方便的进行错误处理和错误信息的显示?
- 在UpdatePanel中如何弹出错误信息
- 如何在 SharePoint中显示详细错误信息
- 如何在项目中处理变更
- linux中tomcat部署项目报错,如何显示错误信息?
- 在web项目中使用session传递错误信息(草稿)
- 在Eclipse中非法删除项目时如何处理
- 如何在j2ee项目中处理高并发量访问?
- 如何在j2ee项目中处理高并发量访问?
- BADI 中错误信息的处理
- BADI 中错误信息的处理
- ERP中已入账业务单据错误信息修改探讨
- 如何处理连接数据库JavaBean的错误信息
- Struct2或者SSH项目中,在JSP页面显示Action中注册的错误信息
- Struct2或者SSH项目中,在JSP页面显示Action中注册的错误信息
- 在Eclipse Galileo中配置Tomcat及代码显示HttpServlet相关错误信息处理方法
- Filco蓝牙键盘在Win8.1/Linux双系统中应用 Win8引导Linux 蓝牙双系统配对
- Dynamics CRM 2015 Update 0.1 - Error.ActionFailed Microsoft.Crm.Tools.Admin.InstallDatabaseUpdatesAc
- Posts Tagged 【Math】
- Linux 目录结构说明
- 涉足计算机视觉领域要知道的
- 探讨在项目中如何处理错误信息
- 矩阵链相乘(递归、动态规划解法)
- Hessian源码学习(1)
- hznu 1652 能量项链(dp,难)
- LeetCode 169 Majority Element
- 如何查看网站的访问量?查看访问量的二个主要方法【站长之家的SEO综合查询工具】
- exit(0)与exit(1)、return区别
- Step into Scala - 01 - 安装与运行
- OJ 删数问题