Atitit 异常机制与异常处理的原理与概论
2016-11-03 21:14
204 查看
Atitit 异常机制与异常处理的原理与概论
1. 异常vs 返回码1
1.1. 返回码模式的处理 (瀑布if 跳到失败1
1.2. 终止模式 vs 恢复模式(asp2
1.3. 异常机制的设计原理2
1.4. Atitit.异常机制的设计原理.docx java2
1.5. JVM看Exception本质.java的ex设计throry2
1.6. Js java c# php中以类库实现异常catch2
1.7. Check ex vs unchk ex2
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
xxxx
}})
Finally(e,(){})
exStart()
参考资料 atitit atijavaexconverter4js 新的特性
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);
}
catch(Exception e){
throw e;
}
这样有一个好处,我们可以将异常交给上一级环境处理,但是这样就会存在一个问题,抛出的的异常携带的信息,也就是printStackTrace()方法显示的是原来异常抛出点的调用栈信息,而非重新抛出点的信息,这样重新抛出点的调用信息就被掩盖了。如果想更新重新抛出点信息到这个异常调用栈中,就可以使用fillInStackTrace()方法:
catch(Exception e){
throw e.fillInStackTrace();
}
那么当前调用栈的信息就更新到了这个异常对象中了,还有一种情况,也会存在类似的丢失现象:
catch(Exception e){
throw new Exception();
}
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); } } }
主要是业务层处理与view层处理
一般是 catch 到 Lower Level Exception,但是向外抛出的却是 Higher Level Exception,对异常进行转换。
异常类型,异常消息,异常堆栈,异常json,xml源文本.
然后 抛出..
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://www.cnblogs.com/attilax/
Atiend
1. 异常vs 返回码1
1.1. 返回码模式的处理 (瀑布if 跳到失败1
1.2. 终止模式 vs 恢复模式(asp2
1.3. 异常机制的设计原理2
1.4. Atitit.异常机制的设计原理.docx java2
1.5. JVM看Exception本质.java的ex设计throry2
1.6. Js java c# php中以类库实现异常catch2
1.7. Check ex vs unchk ex2
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 跳到失败
参考 错误处理的四种方法 - 李奥霍克 - 博客园.html1.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 ,有的process4.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 qa15.2. 转换为本层的业务异常,抛出至上层处理(推荐)例如从通信层异常转为业务异常,方便理解
从通信层异常转为业务异常,方便理解主要是业务层处理与view层处理
一般是 catch 到 Lower Level Exception,但是向外抛出的却是 Higher Level Exception,对异常进行转换。
5.3. 事务rollback
能 rollback 的尽量 rollback5.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.htmlAtitit 跨平台异常处理
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://www.cnblogs.com/attilax/
Atiend
相关文章推荐
- Atitit 异常机制与异常处理的原理与概论
- Atitit 异常机制与异常处理的原理与概论
- Atitit 异常机制与异常处理的原理与概论
- Atitit 异常处理之道 attilax著.docx 1. 概念 2 1.1. 异常机制的设计原理 2 1.2. Atitit.异常机制的设计原理.docx java 2 1.3. JVM看Exc
- Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构
- Atitit.跨语言异常转换机制 java c# php到js的异常转换
- Atitit.编译原理与概论
- Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换
- Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7
- Atitit 编程语言原理与概论attilax总结 三大书籍总结
- Atitit 异常的实现原理 与用户业务异常
- Atitit.人力资源管理原理与概论
- Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换
- Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net j
- Atitit 异常的实现原理 与用户业务异常
- Atititjs javascript异常处理机制与java异常的转换.js exception process
- Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构
- Atitit. Java script 多重多重catch语句的实现and Javascript js 异常机制
- Atitit.数据检索与网络爬虫与数据采集的原理概论
- Atitit.人力资源管理原理与概论