Atitit 异常机制与异常处理的原理与概论

1. 异常vs 返回码 1

1.1. 返回码模式的处理 (瀑布if 跳到失败 1

1.2. 终止模式  vs 恢复模式(asp 2

1.3. 异常机制的设计原理 2

1.4. Atitit.异常机制的设计原理.docx java 2

1.5. JVM看Exception本质.java的ex设计throry 2

1.6. Js java c# php中以类库实现异常catch 2

1.7. Check ex vs unchk ex 2

2. atitit 异常分类 java c# 3

3. 业务异常 3

4. 异常处理最佳实践与注意要点 3

4.1. 处理反射方法的异常 3

4.2. 重新抛出异常和异常链 3

4.3. 注意增加对error的处理 4

4.4. 异常 vs 流程控制 4

4.5. Finally 异常丢失的处理 5

5. 常见的捕获异常后的处理策略 5

5.1. 全局异常捕获 5

5.2. 转换为本层的业务异常,抛出至上层处理(推荐)例如从通信层异常转为业务异常,方便理解 5

5.3. 事务rollback 6

5.4. 日志记录,重新抛出 6

5.5. 忽略异常(较少这样处理) 6

6. 分布式系统的异常处理 6

6.1. 异常抛出 6

6.2. 异常传输   跨平台异常的传输可以使用json,xml来序列化传输.. 6

6.3. 异常转换(从源语言转换为目标语言异常)and抛出 6

6.4. 异常处理 7

7. 参考资料 7

1. 异常vs 返回码

1.1. 返回码模式的处理 (瀑布if 跳到失败

参考 错误处理的四种方法 - 李奥霍克 - 博客园.html

1.2. 终止模式  vs 恢复模式(asp

Java对于异常的处理采取的是终止模式,一旦发生问题,程序将不能继续执行,与之对应的是恢复模式,就是当异常抛出时,程序能够继续执行,而不是终止。在Java中如果我们要使用恢复模式,就需要将try块放在while循环中,直到满意,但这明显是不靠谱的,也是我们不提倡的。所以当当前方法终止时,我们只能在异常处理块中使程序向不同的方向继续执行,而具体向什么方向,取决于具体的实现

1.3. 异常机制的设计原理

1.4. Atitit.异常机制的设计原理.docx java

1.5. JVM看Exception本质.java的ex设计throry

1.6. Js java c# php中以类库实现异常catch

catchEx("com.attilax.user.NotLoginEx",error, (){

xxxx

}})

Finally(e,(){})

exStart()

参考资料 atitit  atijavaexconverter4js  新的特性

1.7. Check ex vs unchk ex

2. atitit 异常分类 java c#

3. 业务异常

4. 异常处理最佳实践与注意要点

4.1.  处理反射方法的异常

public static void throwExV3(Throwable e,String msg) {

if(e instanceof InvocationTargetException )

{

e=e.getCause();

}

if( e instanceof RuntimeException)

{

Throwable e3=e.getCause();

RuntimeException runtimeException = new RuntimeException(msg,e3);

throw runtimeException;

//  throw (RuntimeException)e;

}

else

throw new RuntimeException(msg,e);

}

4.2. 重新抛出异常和异常链

有时我们在捕获到异常后,可能在捕获的地方不适合处理该异常,我们需要将它重新抛出:

catch(Exception e){

throw e;

}

这样有一个好处,我们可以将异常交给上一级环境处理,但是这样就会存在一个问题,抛出的的异常携带的信息,也就是printStackTrace()方法显示的是原来异常抛出点的调用栈信息,而非重新抛出点的信息,这样重新抛出点的调用信息就被掩盖了。如果想更新重新抛出点信息到这个异常调用栈中,就可以使用fillInStackTrace()方法:

catch(Exception e){

throw e.fillInStackTrace();

}

那么当前调用栈的信息就更新到了这个异常对象中了,还有一种情况,也会存在类似的丢失现象:

catch(Exception e){

throw new Exception();

}

4.3. 注意增加对error的处理

增加了对java.lang.Error的支持

4.4. 异常 vs 流程控制

顺气自然,有的ex ,有的process

4.5. Finally 异常丢失的处理

我们把最外一层try看着是上一级程序的处理,在这个try里面发生了两次异常,但是我们只能获得从finally中抛出的异常信息,而在f()方法中的异常信息丢失,这种情况我们称上一个异常被抑制了。这在JDK1.7之前同样需要我们自己编码去解决这个问题,在JDK1.7之后,新加入了两个方法帮助我们能够很好的去解决这个问题了,那就是addSuppressed(Throwable exception)和getSuppressed(),对于上述问题的解决:

public static void main(String[] args) { try { Test test = new Test(); Exception exception = null; try { test.f(); } catch (VeryImportantException e) { exception = e; } finally { try { test.dispose(); } catch (OtherException e) { if (exception != null) { exception.addSuppressed(e); } else { exception = e; } } if (exception != null) { throw exception; } } } catch (Exception e) { System.out.println(e); for (Throwable throwable : e.getSuppressed()) { System.out.println(throwable); } } }

5. 常见的捕获异常后的处理策略

5.1. 全局异常捕获

atitit js浏览器环境下的全局异常捕获 v2 qa1

5.2. 转换为本层的业务异常,抛出至上层处理(推荐)例如从通信层异常转为业务异常,方便理解

 

从通信层异常转为业务异常,方便理解

主要是业务层处理与view层处理

一般是 catch 到 Lower Level Exception,但是向外抛出的却是 Higher Level Exception,对异常进行转换。

 

5.3.  事务rollback

能 rollback 的尽量 rollback

5.4. 日志记录,重新抛出

主要用来统计分析稳定性情况,预警等

 

5.5. 忽略异常(较少这样处理)

为了提升稳定性,需要冗余处理的时候,可以这样做。。。

 

 

 

6. 分布式系统的异常处理

6.1. 异常抛出 

6.2. 异常传输   跨平台异常的传输可以使用json,xml来序列化传输..

 

6.3. 异常转换(从源语言转换为目标语言异常)and抛出

 

例如,从java异常转换为c# 异常或者 js异常...

 

异常类型,异常消息,异常堆栈,异常json,xml源文本.

然后  抛出..

 

 

6.4. 异常处理

 

 

 

 

 

 

7. 参考资料

Java 异常详解 - weisg81的专栏 - 博客频道 - CSDN.NET.html

Atitit 跨平台异常处理

atitit java到js的异常转换.docx

Atitit java的异常exception 结构Throwable类

atitit 常见的异常分类

Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换

Atitit 异常的操作api attilax总结 org.apache.commons.lang3.exception

atitit 异常机制的设计原理 (2)

Atitit.android崩溃日志 全局异常捕获机制

Atitit.window.onerror 全局异常对象在不同浏览器的表现

Atitit.应该内置的 常见业务异常

Atitit避免出现空指针异常解决方案

笑谈软件工程:异常处理的设计与重构

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

Atiend

Atitit 异常机制与异常处理的原理与概论相关推荐

  1. Java异常机制及异常处理建议

    Java异常机制及异常处理建议 参考文章: (1)Java异常机制及异常处理建议 (2)https://www.cnblogs.com/wangxilei/p/9522259.html 备忘一下.

  2. Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结

    Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结 1. 微内核与插件的优点1 2. 插件的注册与使用2 2.1. Ioc容器中注册插件2 2.2. 启动器微内核启动3 ...

  3. 【转载】Java异常控制机制和异常处理原则

    转载自Java异常控制机制和异常处理原则 Java异常控制机制又被称为"违例控制机制". 捕获程序错误最理想的时机是在编译阶段,这样可以彻底避免错误的代码运行.但并非所有的错误都能 ...

  4. Java异常处理及异常机制介绍

    Java异常处理及异常机制介绍 当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用...)时,JAVA就会用异常对象来描述. JAVA中用2种方法处理异常: 1.在发生异 ...

  5. Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构

    Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构 1. 索引的分类1 1.1. 索引的类型  按查找方式分,两种,分块索引 vs编号索引1 1.2. 按索引与数据的查找顺序可分为 正 ...

  6. java 异常机制_深入理解Java异常处理机制

    一.引子 try-catch-finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的"教训"告诉我,这个东西可不是想象中 ...

  7. java异常应用_Java异常处理机制 —— 深入理解与开发应用

    本文为原创博文,转载请注明出处,侵权必究! Java异常处理机制在日常开发中应用频繁,其最主要的不外乎几个关键字:try.catch.finally.throw.throws,以及各种各样的Excep ...

  8. java 异常管理员_Java异常处理机制

    Java 中的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行的程序的正常指令流.为了能够及时有效地处理程序中的运行错误,必须使用异常类. 一.异常简介 在程序中, ...

  9. C++异常处理之abort()、异常机制、exception 类

    程序运行时有时会遇到错误,导致程序无法正常运行下去,通常程序员会试图预防这种意外.C++异常为处理这种情况提供了一种功能强大而灵活的工具.这里仅介绍三种: 调用abort()函数 异常机制 excep ...

  10. java 异常分类与处理要机制_Java异常分类,异常处理及异常处理机制

    1.异常机制 异常机制是指程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 2.异常的分类 异常的继承结构 ...

最新文章

  1. python网络编程例子
  2. python常用的工具函数
  3. slidingmenu 中view使用练习
  4. Eclipse + CDT引入OpenCV失败的解决的方法
  5. 打包filemanager-webpack-plugin的报错和解决
  6. 机器学习帮助WebRTC视频质量评价
  7. 面试题之cookie和session区别
  8. 对外汉语偏误语料库_哇,9大对外汉语必备语料库,每个都很有“性格”!!...
  9. java判断日期是否是本月_Java写一个函数判断一个日期是否在本月之内
  10. 萤石开放平台的二次开发——设备如何上云
  11. 使用FreeHttp强制登出微信公众号登陆状态(实现~原理)
  12. 如何用计算机求矩阵的逆矩阵,逆矩阵的求法
  13. 划分数,分苹果问题·计算机算法·动态规划·C/C++
  14. 网线直连,Synergy低延迟顺滑共享鼠标键盘
  15. e480换高分屏_ThinkPadE480电脑(i5-8250u 8G内存 256G固态 高分屏0QCD 14英寸) 京东5699元...
  16. 如何:创建 MDI 父窗体、子窗体、确定活动的 MDI 子窗体
  17. 二次元动漫卡通风格手机APP应用下载页自适应源码
  18. 阿里的面试官都喜欢问哪些问题?
  19. 逆势稳增,亚信科技的韧性和潜力
  20. (私人收藏)2019WER积木教育机器人赛(普及赛)基础解决方案

热门文章

  1. java项目关联关系_Mybatis一对多关联关系映射实现过程解析
  2. 关于CASE WHEN的多条件汇总问题
  3. OC语言——————表视图
  4. Layout自动布局(2)-手写代码
  5. VMware下Ubuntu与宿主Windows共享文件夹
  6. 输出有向图的邻接矩阵
  7. 罗森伯格2013中国数据中心峰会—长春站
  8. Java算法——回溯法
  9. HNOI2013 切糕
  10. react native webview 不能滑动页面