你能保证你的程序不会出问题吗?

不能

当你的程序执行到某个地方发生了你不想要的结果。你是否想让它一错再错?

不想

你是否想让你的程序占着茅坑不拉屎?

不想

你是否想知道你的程序出错的原因?

看了了这4个问题之后。假设你的回答和我的一致,那么请看下文

trycatch finally的使用方法:

  1. try
  2. '你想要写的程序
  3. catch
  4. '捕获你想写的程序里面全部发生的异常
  5. finally
  6. '不管发生还是不发生异常,你都想运行的代码

演示样例:

  1. Dim Update_Info As String = "update " & Table & "set " & FieldAndContent    '改动的sql语句
  2. Dim DBConnectStr As New ConnectStringDAL    '数据库连接字符串
  3. Dim DBConnection As New SqlConnection(DBConnectStr.ConnectString)   '数据库连接对象
  4. DBConnection.Open() '连接数据库
  5. Dim DBCmd As New SqlCommand(Update_Info, DBConnection)  '运行改动语句
  6. Result = "成功改动了:" & DBCmd.ExecuteNonQuery & "行"
  7. Catch ex As Exception
  8. Result = "在改动数据过程中发生了错误:" & ex.Message
  9. MsgBox Result
  10. finally

    DBConnection.Close


倘若你的程序在连接数据库的时候出错导致连接失败,假设没有不论什么你能够參考的提示信息。那么你可能会觉得是查询语句错了。而不是sa用户的登录password错误了。而如上程序,假设

DBConnection.Open() '连接数据库

这里出错了,那么这句完了之后她就直接跳转到catch ex as exception那里运行它以下的语句,通过调用ex.message,它会返回错误的原因,可能是username或password错误了。然后你能够在finally那里写上关闭数据库连接的代码,这样就能够防止程序遇到错误直接跳出程序。而不释放资源(相当于占着茅坑不拉屎)。


回到刚才的第二个问题,当程序发生了你不想要的结果。他会一直执行下去。刚才说遇到错误它会跳出来。可是不想要的结果如本来这个变量A应该被赋值得到3,可是它却是4,而这个时候它是不会直接跳出的,由于这不是什么异常的错误,可能是逻辑上的错误。依照分层的思想。假设发生在UI层,我们为了让UI曾职责单一,不进行不必要的推断语句,仅仅负责用户操作的响应、用户数据的传递和各种显示的功能,逻辑上不做太多的推断和处理,这时候你能够使用抛出异常来使你的程序发生异常,直接跳到catch那里。

比方上面的代码

  1. Dim Update_Info As String = "update " & Table & "set " & FieldAndContent    '改动的sql语句
  2. Dim DBConnectStr As New ConnectStringDAL    '数据库连接字符串
  3. Dim DBConnection As New SqlConnection(DBConnectStr.ConnectString)   '数据库连接
  4. Dim DBCmd As New SqlCommand(Update_Info, DBConnection)  '运行改动语句
  5. Result = "成功改动了:" & DBCmd.ExecuteNonQuery & "行"
  6. Catch ex As Exception
  7. Result = "在改动数据过程中发生了错误:" & ex.Message

在连接数据库之前抛出了异常,注意。这个异常是你人为 的制造的。它也属于异常的一种类型,所以这个时候它就不运行连接数据库以及以下的代码直到catch为止,他会运行catch以下的代码,并显示异常的原因。值得注意的是finally后面的语句,无论程序是否会出现异常。它肯定是会运行的,一般自己衡量一下该运行什么程序好。一般都会写一些释放资源的代码。

重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)...相关推荐

  1. 重构机房收费系统总结1之配置文件+反射+抽象工厂

    在重构机房收费系统之前就一直听说这次重构要用反射+配置文件.深远的作用不知道,可是在这次重构用到,目的还是挺明白的:就是为了更换数据时方便,遵循开放-封闭原则.攻克了可维护和可扩展的问题. 以下就以机 ...

  2. 重构机房收费系统(二)

    接上篇<机房收费系统重构(一)> 二.概要设计 完成了用例图,并用结合用例图完善了一下需求分析说明书,忘记是第几次修订需求分析说明书.有了用例图,很自然就进入了概要设计阶段.我认为这一阶段 ...

  3. 重构机房收费系统(一)

    从10月1号开始重构学校机房收费系统,没想到这次重构,推翻,再重构--用了两周时间. 这次整体架构采用三层,并融入了一些设计模式. 下面介绍这次重构的过程: 一.从UML用例图开始 对于机房收费系统的 ...

  4. 重构机房VB.NET机房收费系统个人重构版你都学会了什么(之一)

    每日一贴,今天的内容关键字为重构机房 在VB.NET机房收费系统个人重构版时你都学会了什么?在开始第二遍的机房收费系统个人重构时,我发明不知不觉竟接触了很多很多之前不晓得的货色,也学到了很多新知识.下 ...

  5. vb.net机房收费系统重构——存储过程的使用

    在敲写七层登陆过程中,接触了存储过程的概念,但当时还没使用.在正式的重构过程中,一点点添加,将存储过程也添加到了重构中.才正式了解了存储过程. 首先 [存储过程的概念] 存储过程Procedure是一 ...

  6. 机房收费系统重构(五)—登陆窗口完整版

         在上上篇.<机房收费系统重构(3)>.中主要是介绍了自己关于DAL层,工厂层.以及接口层,还有实体层的理解.可是好多读者再问我.你的代码呢,我在这解释一下.就是我仅仅是写出关于那 ...

  7. 机房收费系统个人重构版:暮然回首,灯火阑珊

    [背景]   在蹒跚中自己的机房收费系统个人重构版已完结:回望这一路征程,感慨颇多:快乐过,痛苦过:紧张过,放松过!真可谓:酸甜苦辣,五味杂陈. [比一比] VB.Net版个人重构版比VB版机房收费系 ...

  8. 机房收费系统个人重构版:软工文档中那些图

    [前言]    图,提到这个字的时候脑海中就会出现许许多多的图像,它的重要性相信大家都明白,相比于文字来说它更生动形象正好符合人类大脑的记忆规律:很多人也知道动画片制作原理也是用一张张图片只不过转换的 ...

  9. 机房收费系统个人重构版:透过文档谈文档驱动开发

    [背景] 机房收费系统个人重构已接近尾声,在最后阶段自己去补文档以及其中涉及到的图!经过将近一周的奋战将其完善,并最终通过师父的验收.透过这次机房重构写文档和画图,自己感触颇深,在此与大家共享. [文 ...

最新文章

  1. 丁磊建议将少儿编程纳入学业水平考试,是少儿编程太热,还是起跑线焦虑
  2. java多层catch语句_Java异常之catch语句块
  3. File.separator或File.pathSeparator
  4. 开发做甲方还是乙方_建筑行业的职场小白求职时是选择做甲方还是乙方?
  5. Windows sever 2008 动态硬盘数据恢复
  6. 第一次作业:深入源码分析进程模型
  7. Tiny Jpeg Decoder (JPEG解码程序) 源代码分析 2:解码数据
  8. SpringBoot多跨域请求的支持(JSONP)
  9. 一枝穿云箭,千军万马来相见——致2015届电子科大信软学院新生
  10. css建立一个简单的设备登记表,员工登记表格的CSS块
  11. 怎么更改网络中的计算机名字,计算机名称如何更改?电脑的计算机名修改方法...
  12. 【转载】JavaWeb之ssm框架搭建中遇到的问题
  13. P/O矩阵、R/D矩阵、IPO图、C/U矩阵知识点
  14. react+amcharts5柱状图demo
  15. 华为HCIP-DATACOM(821)411-440
  16. 微信小程序 延时执行 设置固定时间间隔
  17. 二分查找、求上界和下界(包括内置函数lower_bound、和upper_bound的使用)
  18. 110 李俊民 新庵
  19. Netflix创始人:我不要求996,照样市值万亿!
  20. 《java编程思想》读书笔记【前言】

热门文章

  1. 变压器符号_变压器电路图符号大全
  2. getOutputStream() has already been called for this response
  3. webpack4 高手之路 第四天
  4. Java泛型解析(02):通配符限定
  5. Delphi下使用OpenOffice+JodConverter+SWFtools进行文件转换
  6. 统计学习方法|K近邻原理剖析及实现
  7. MAC能登录微信,浏览器连不上网
  8. C++ 之虚函数的实现原理
  9. SQLServer之创建AFETER DELETE触发器
  10. 图解TCP/IP(第5版)PDF