异常处理机制
来源:互联网 发布:知乎回答被折叠 编辑:程序博客网 时间:2024/05/16 14:33
首先理解调用栈:
任何一次程序运行都是从主线程的主方法开始的,调用链路上的每一级既是下一级的调用者,又是上一级的被调用者。调用者等待被调用者的返回,方可继续执行。
但是被调方法中可能抛出异常,而中断程序运行。
我们可以在当前层级处理异常,也可以层层上报,直到调用栈上的某一个层级可以处理。
具体来说是三种选择:
1、捕获异常,在当前层级处理。
2、上报给调用者,使用throws声明异常列表。
3、捕获异常,做出当前层级可以做出的处理,在catch块中重新抛出异常,在方法后面throws声明异常列表,上报给调用者。
通俗来说:
1、我能处理;
2、我不能处理;
3、我只能处理一部分。
什么时候代码中要建立异常处理分支?
1、正在调用的方法显式声明了checked exception,当前代码必须做出反应,否则不能编译通过;怎么处理,参见上文三种方式。
2、测试过程发现,被调方法可能抛出运行期异常。
你希望程序就此终止,那么可以不做任何处理。
你希望建立分支应对此运行期异常,就捕获他。
通常,运行期异常无需处理。
关键字语义:
try:试运行
catch:出现匹配异常则捕获之
finally:无论是否出现异常,必须执行,通常用于清理资源
throw:手工抛出异常
throws:声明该方法可能抛出异常,需要上一级调用者注意
- C#异常处理机制
- 异常处理机制
- 异常处理机制
- C++异常处理机制
- 异常处理机制
- 异常处理机制【转】
- java异常处理机制
- java异常处理机制
- c++异常处理机制
- windows 异常处理机制
- struts2异常处理机制
- OpenCV异常处理机制
- 异常处理机制
- 异常处理机制
- c++异常处理机制
- struts异常处理机制
- oracle异常处理机制
- Struts1_08_struts异常处理机制
- java 判断字符串是否为数字 十进制 十六进制
- AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(菜单篇)
- Java实现PDU编码
- 整数取反
- 构建高性能的 HTTP 服务器 (二)--NIO 模式的HTTP服务器
- 异常处理机制
- When to stop testing
- RTP, RTCP, RTSP, SRTP, SRTCP
- 适配器模式及C++实现
- Oracle 12C安装初体验之软件安装
- 页面加载的时候弹出提示框
- 面向服务的体系结构(SOA)——(1)目标与核心概念
- Creating AssetBundles创建资源包小工具
- 如何查看进程打开了哪些文件?