当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: <<展现C#>> 第七章 异常处理(rainbow 翻译) 出处:http://www.informit.com/matter/ser0000002 正文: 第七章异常处理 通用语言运行时(CLR)具有的一个很大的优势为,异常处理是跨语言被标准...
 

 

    摘要: 5.3 类属性 有两种途径揭示类的命名属性——通过域成员或者通过属性。前者是作为具有公共访问性的成员变量而被实现的;后者并不直接回应存储位置,只是通过 存取标志(accessors)被访问。 当你想读出或写入属性的值时,存取标志限定了被实现的语句。用于读出属性的值的存取标志记为关键字get,而要修改属性的值的读写符标志记为set。 在你对该理论一知半解以前,请看一下清单5.......
    摘要: <<展现c#>> 前言(补充) 和第三章 第一个c#程序(rainbow 翻译) 出处:http://www.informit.com/matter/ser0000001/chapter1/ch03.shtml 正文: 前言 0.1 提要 欢迎阅读《展现 c#》(presenting c#)。这本书是你提高企业编程语言的一条捷径。这种企业编程......


<<展现C#>>第七章异常处理(rainbow翻译)(来自重粒子空间)
<<展现c#>> 第七章 异常处理(rainbow 翻译)

出处:http://www.informit.com/matter/ser0000002 【程序编程相关:探究客户端浏览器分辨率的自适应问题(2)

【推荐阅读:探究客户端浏览器分辨率的自适应问题(1)

正文: 【扩展信息:探究客户端浏览器分辨率的自适应问题(3)

第七章   异常处理

    通用语言运行时(clr)具有的一个很大的优势为,异常处理是跨语言被标准化的.一个在c#中所引发的异常可以在visual basic客户中得到处理.不再有 hresults  或者 isupporterrorinfo 接口.

    尽管跨语言异常处理的覆盖面很广,但这一章完全集中讨论c#异常处理.你稍为改变编译器的溢出处理行为,接着有趣的事情就开始了:你处理了该异常.要增加更多的手段,随后引发你所创建的异常.

7.1  校验(checked)与非校验(unchecked)语句

    当你执行运算时,有可能会发生计算结果超出结果变量数据类型的有效范围.这种情况被称为溢出,依据不同的编程语言,你将被以某种方式通知——或者根本就没有被通知.(c++程序员听起来熟悉吗?)

     那么,c#如何处理溢出的呢? 要找出其默认行为,请看我在这本书前面提到的阶乘的例子.(为了方便其见,前面的例子再次在清单 7.1 中给出)

清单 7.1     计算一个数的阶乘

1: using system;

2:

3: class factorial

4: {

5:  public static void main(string[] args)

6:  {

7:   long nfactorial = 1;

8:   long ncomputeto = int64.parse(args[0]);

9:

10:   long ncurdig = 1;

11:   for (ncurdig=1;ncurdig <= ncomputeto; ncurdig++)

12:    nfactorial *= ncurdig;

13:

14:   console.writeline("{0}! is {1}",ncomputeto, nfactorial);

15:  }

16: }

    当你象这样使用命令行执行程序时

    factorial 2000

    结果为0,什么也没有发生.因此,设想c#默默地处理溢出情况而不明确地警告你是安全的.

     通过给整个应用程序(经编译器开关)或于语句级允许溢出校验,你就可以改变这种行为.以下两节分别解决一种方案.

7.1.1 给溢出校验设置编译器

    如果你想给整个应用程序控制溢出校验,c#编译器设置选择是正是你所要找的.默认地,溢出校验是禁用的.要明确地要求它,运行以下编译器命令:

csc factorial.cs /checked+

    现在当你用2000参数执行应用程序时,clr通知你溢出异常(见图 7.1).

图 7.1 允许了溢出异常,阶乘代码产生了一个异常.

  按ok键离开对话框揭示了异常信息:

exception occurred: system.overflowexception

  at factorial.main(system.string[])

  现在你了解了溢出条件引发了一个 system.overflowexception异常.下一节,在我们完成语法校验之后,如何捕获并处理所出现的异常?

7.1.2 语法溢出校验

  如果你不想给整个应用程序允许溢出校验,仅给某些代码段允许校验,你可能会很舒适.对于这种场合,你可能象清单7.2中显示的那样,使用校验语句.
...   下一页
 ·c#查本机地址和网段扫描    »显示摘要«
    摘要: using system; using system.drawing; using system.collections; using system.componentmodel; using system.windows.forms; using system.net; using system.threading; namespace windowsapplication......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE