异常处理的相关主题

catch 块必须按照最具体到最不具体排列。

finally块:只要控制离开try块,finally块就会执行,最适合用来执行资源清理。

规范:

要优先使用try/finally 而不是try catch块来实现资源清理代码。

要在抛出的一场中描述异常为什么发生,如有肯那个,还要说明如何防范。

避免捕捉无法获知其正确行动的异常,对这种异常不进行处理比处理的不正确要好。

有时catch块能够捕获到异常,但不能正确或者完整的处理它,在这个时候可以让这个catch块重新引发异常,方法是使用一个单独的throw语句,不在其后面指定任何异常。不指定exception变量所引用的异常,从而保持了异常中的“调用栈”信息,而throw exception将之前的信息替换成当前调用栈信息。而调试时一般需要知道原始调用栈。

规范:

要在捕捉并重新引发异常时使用空的throw语句,以便保持调用栈。

要通过引发异常而不是返回错误码来报告执行失败。

不要让公共成员将异常作为返回值或者Out参数。要通过异常来指明错误,不通过他们作为返回值来指明错误。

避免使用异常处理来处理意料之中的情况。异常是专门为了跟踪例外的,事先没有预料到的,而且可能造成严重后果的情况而设计的。

通常,开发者必须假定用户会采取非预期的行为,所以应当防卫性地编写代码,提前为所有能想到的“愚蠢的用户行为”拟定对策。

异常处理会带来毫秒级的性能损失。

使用TryParse()来执行数值转换。

if(int.TryParse(ageText,out age))

{

//TryParse方法返回bool值,所以要求使用out关键字在转换成功的情况下返回转换结果。

}

这样就避免了对于类型转换的异常处理。在CLI2.0版本中为所有数值类型都实现了这个方法

时间: 2024-10-06 10:25:28

异常处理的相关主题的相关文章

C++中的异常处理

1.C++异常处理 (1)C++内置了异常处理的语法元素,try...catch...,这是两个新的关键字在C++中 @1:try语句代码块中用来处理正常代码逻辑 @2:catch语句代码块中用来处理异常情况 @3:try语句中的异常由对应的catch语句进行处理 try { douuble r = divide(1, 0); } catch(...) { cout << "Divide by zero..." << endl; } @4:try语句代码块中用来

Web API系列(三) 异常处理

在上一篇教程中我为大家介绍了Web API中Filter的开发使用,其中讲到ExceptionFilter时留了一个坑:ExceptionFilter只能截获并处理Action执行过程中发生的异常,在Action执行过程之外如果出现异常,ExceptionFilter是无能为力的. 这些异常包括: 1.  Controller构造方法中出现的异常 2.  MessageHandlers中出现的异常 3.  路由过程中出现的异常 4.  Body在序列化/反序列化过程中出现的异常 由此可以看出,E

CodeBlocks主题设置

1.下载CodeBlocks的相关主题,这里提供一个下载链接:http://pan.baidu.com/s/1mi4W2BA 2.在本地磁盘的C盘中,找到CodeBlocks默认的主题default. conf(一般在C:\\Users\用户名\AppData\Roaming\CodeBlocks中),将下载好的主题覆盖default.conf,并重命名为default.conf 3.打开CodeBlocks (1)在设置菜单栏里面选择编辑 (2)挑选合适的主题

关于SEH(结构化异常处理)的一些知识

梳理老罗win32汇编关于SEH一章的知识. 异常处理方式有两种: 筛选器异常处理和结构化异常处理,筛选器是全局性的,无法为一个线程或一个子程序单独设置一个异常处理回调函数,而结构化异常处理(Structured Exception Handing)SEH提供了每个线程之间独立的异常处理方法. 以下以两个例子来学习SEH 例子1:不含栈展开操作的异常处理(栈展开会在例子二中介绍) .386 .model flat,stdcall option casemap:none ;>>>>&

JNI/NDK开发指南(十一)——JNI异常处理

转载请注明出处:http://blog.csdn.net/xyang81/article/details/45770551 异常简介 异常,显而意见就是程序在运行期间没有按照正常的程序逻辑执行,在执行过程当中出现了某种错误,导致程序崩溃.在Java中异常分为运行时异常(RuntimeException)和编译时异常,在程序中有可能运行期间发生异常的逻辑我们会用try-catch-来处理,如果没有处理的话,在运行期间发生异常就会导致程序奔溃.而编译时异常是在编译期间就必须处理的.本章主要介绍运行时

主题模型及其在文本情感分析中的应用

随着Web2.0技术的出现和发展,互联网上(包括门户网站.电子商务网站.社交网站.音/视频分享网站.论坛.博客.微博等)产生了海量的.由用户发表的对于诸如人物.事件.产品等目标实体的评论信息.例如,下面这两个短文本评论:(1)“比较了多个智能手机后选择了8150,性价比还可以.另外,就是考虑到它是3.7的屏幕,大小比较合适,否则携带很不方便.”(京东商城用户,2011.11.25):(2)“我以前在杭州做二手房地产,用温州炒房客的话说:全世界房价降了,杭州的房价永远不会降,因为他们有一道坚不可摧

详解MindManager15回应主题提醒

在MindManager思维导图中添加主题提醒之后,当主题提醒到期时,会出现MindManager主题提醒对话框,显示当前提醒的主题.相关的导图.提醒的时间以及提醒是否刚好到期或过期,还会看到所有尚未回应的过期提醒.对于列出的所有提醒,该如何回应呢?本文将向大家介绍如何在MindManager中回应主题提醒. 打开导图 打开提醒来源的导图,并选择相关主题,主题提醒对话框保持打开,执行以下操作之一: 删除 表示你已经确认了该提醒,且不想再看到它. 贪睡 推迟在贪睡按钮下选择的提醒时间. 若要在当前

netbeans相关

1.netbeans启动界面中英文切换 netbeans启动时应该时自动按当前系统的语言环境来选择界面语言,所以平常启动界面都是中文的 中文时有时不太舒服,而且代码字体很难看,调为英文就好多了. 方法:添加启动参数 --locale en_US 右键桌面的图表,属性,在启动命令最后添加此参数即可 2.netbeans安装好后,默认没的java web项目模板 可以通过tools-->plugin安装相关插件,里面有很多,我是把由netbeans提供的相关插件(C++,Java ME,PHP除外)

怎么调整MindMapper主题间的距离

在我们做完MindMapper导图时,有可能会感觉导图整体缩在一起或者太空旷而不好看,要如何做才能轻松调整MindMapper主题间的距离,让导图的整体性更强呢?下面,小编给大家详细讲述如何批量调整MindMapper主题间距. 若有疑问可直接访问:http://www.mindmapper.cc/jiqiao/mmp-tiaozheng-jianju.html 若是整个导图的主题间距都要调整,可以不选中任何一个主题,找到[首页]>格式板块的“间距”,点开小黑三角,可以看到有4个选项. 这四个选