Java异常处理
来源:互联网 发布:诺基亚925下载软件 编辑:程序博客网 时间:2024/06/06 03:49
最近写了不少业务代码,深感异常处理之重要性。异常处理好了,能让系统更加稳健、并易于寻找错误。在实践过程中,对于下面的代码:
try { // do something} catch (Exception e) { // do nothing }
这种应该是要深恶痛绝的,既然什么也不做,为什么要吞掉异常,直接抛出不就得了呗,这样出错了也好定位错误。有个Fail fast
原则, 程序中关键性的代码,比如数据库、redis、mq的连接出现异常,应用立即运行失败。再比如有些IOException
、FileNotFoundException
直接抛出得了,或者捕获之后加点异常描述信息之后也将异常抛出,程序出错了,能直接定位错误。
有异常并不是坏事,只是表明你写的程序或许有bug,还存在改进的地方。
再看一例:
public static String encodeString(String name) throws Exception { return URLEncoder.encode(name, "UTF-8"); }
直接在方法上throws Exception
,这样出现异常后是直接抛出了,但还是不好。在其他的方法中调用这个encodeString
方法时,还要try catch
或 throws
, 这样其实是不方便的。
我们知道,RuntimeException
是不用定义throws
的,
所以可以为你的应用自定义一个runtime 异常:
public class BusinessException extends RuntimeException { private static final long serialVersionUID = 1L; private String errorCode; public String getErrorCode() { return errorCode; } /** * 自定义运行时异常 * * @param errorCode 业务自定义错误码 * @param message 必须是用户可读的错误信息 */ public BusinessException(String errorCode, String message) { super(message); this.errorCode = errorCode; } /** * * @param message */ public BusinessException(String message) { super(message); }}
然后在你的业务代码中:
public static String encodeString(String name) { String res; try { res = URLEncoder.encode(name, "UTF-8"); } catch (UnsupportedEncodingException ex) { throw new BusinessException("编码异常"); } return res; }
如果系统运行的时候有问题就抛出异常,在排解错误的时候会十分方便。
参考链接:
http://www.importnew.com/1701.html
0 0
- 【java】java异常处理
- java异常和异常处理
- Java 异常及异常处理
- java异常与异常处理
- Java异常处理-----自定义异常
- Java异常与异常处理
- java异常及异常处理
- Java 异常与异常处理
- Java异常与异常处理
- Java异常及异常处理
- Java异常处理--自定义异常
- JAVA异常之异常处理
- Java异常处理-----自行处理
- Java异常处理-----抛出处理
- Java异常处理-----抛出处理
- java异常处理
- java 异常处理分析
- java异常处理
- SpringMvc+quartz
- NOJ 1017 乘机最大 区间dp
- 为何我看好电商直播
- 阿里云服务器搭建
- Maven学习- nexus
- Java异常处理
- IDF16:解读Ceph百万IOPS测试及优化
- C#之WinForm基础 文件对话框内只可以看到的某一种类型
- [Android]Android Fragment 真正的完全解析(上)
- 安装 SQL Server 2014 Express
- uvalive 4080 Warfare And Logistics(最短路树)
- 2016年9月13-9月18日
- 【Web前端】HTML5 Canvas小游戏
- [Android]Android Fragment 真正的完全解析(下)