防御式程序设计

所谓的防御式程序设计并不是增强程式的防御,这样是没有用的。有太多种位置的输入域状况可能会出现。如何在已知、位置的环境中,程序对于正确、错误输入的反应,才是真正的防御式程序设计。

下面我们就从型别转换、例外处理三方面来讨论防御式程序设计。

 

(一)、型别转换

每个值都有相关的型别,该型别定义属性,例如配置给值的空间量、能够拥有的可能值范围,以及提供的成员。许多值都可以表示成多种型别的。例如,数值4可以表示成整数值或浮点值。型别转换建立新型别的值,与原型别的值相等,但不一定会保留原使物件实际的值。当编译器检测到不安全的转换时,便会发生错误或是警告,这就需要我们最好明确型别转换,便可以在设计时期检查出错误。

 

(二)例外处理

       所谓的例外就是发生了预期之外的状况,包括除零错误、数值溢出、存取阵列超过界限、物件参考和档案不存在、无法存取资料库等。在net中的例外被视为是物件而不是错误的程序,它可以透过扔出(Throw)的方式被引发,透过Catch的方式被捕获。

       例外物件的型别代表例外的种类。例外的种类主要包括System.SystemException(系统定义的例外)、System.ApplicationException(使用者定义的例外)。

如果可能的话,大家希望可以处理所有的例外,至少要记录下例外的信息。.

vb.net中处理例外的方法为使用try-catch语句:

格式:try

      Catch  ex As  Exception

      End try

使用此语法可能出现两种流程:

1)  如果没有例外发生,将跳过Catch区域直接执行statement6

2)  如果有例外发生,程序将立刻跳入catch区域中

 

 

       假设例外是发生在档案开启之后的,此时档案仍然为开启状态,因为没有执行开关档案的程序码,则可以使用try –catch-finally语法解决。根据预设,执行完catch区域中的程序码后,程序将继续执行,使用的解决方式为System.Environment.Exit跳出程序,或者用之处(throw)例外。我们还可以针对例外处理进行最佳化,举例来说,可以使用不同的例外类别进行筛选,将执行第一个Catch到的程式码区域。

       在类别设计中,不必试着去解决例外状况,但是至少要能够捕捉、记录再掷出例外。在例外发生。的时候,不需要输出结果到屏幕上或是结束程序,但是要将发生的例外写入事件记录。

 

(三)、应用程式的追踪

       追踪也是防御式程式设计的技巧之一,它会记录有关程式执行的信息,当例外发生时,我们就能检查错误的内容。

       根据预设,这回总的结果将输出到:debug版本中将显示在真搓视窗中;在Release版本中,输出的结果将被忽略。追踪到的接听项可以为事件记录、档案或是任何你想输出的目标。

对于接听项的设定通常是在程序开始时设定。下面为接听项为“log.txt”文字档的设定。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值