重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)...
你能保证你的程序不会出问题吗?
不能
当你的程序执行到某个地方发生了你不想要的结果。你是否想让它一错再错?
不想
你是否想让你的程序占着茅坑不拉屎?
不想
你是否想知道你的程序出错的原因?
想
看了了这4个问题之后。假设你的回答和我的一致,那么请看下文
trycatch finally的使用方法:
- try
- '你想要写的程序
- catch
- '捕获你想写的程序里面全部发生的异常
- finally
- '不管发生还是不发生异常,你都想运行的代码
演示样例:
- Dim Update_Info As String = "update " & Table & "set " & FieldAndContent '改动的sql语句
- Dim DBConnectStr As New ConnectStringDAL '数据库连接字符串
- Dim DBConnection As New SqlConnection(DBConnectStr.ConnectString) '数据库连接对象
- DBConnection.Open() '连接数据库
- Dim DBCmd As New SqlCommand(Update_Info, DBConnection) '运行改动语句
- Result = "成功改动了:" & DBCmd.ExecuteNonQuery & "行"
- Catch ex As Exception
- Result = "在改动数据过程中发生了错误:" & ex.Message
- MsgBox Result
finally
DBConnection.Close
倘若你的程序在连接数据库的时候出错导致连接失败,假设没有不论什么你能够參考的提示信息。那么你可能会觉得是查询语句错了。而不是sa用户的登录password错误了。而如上程序,假设
DBConnection.Open() '连接数据库
这里出错了,那么这句完了之后她就直接跳转到catch ex as exception那里运行它以下的语句,通过调用ex.message,它会返回错误的原因,可能是username或password错误了。然后你能够在finally那里写上关闭数据库连接的代码,这样就能够防止程序遇到错误直接跳出程序。而不释放资源(相当于占着茅坑不拉屎)。
回到刚才的第二个问题,当程序发生了你不想要的结果。他会一直执行下去。刚才说遇到错误它会跳出来。可是不想要的结果如本来这个变量A应该被赋值得到3,可是它却是4,而这个时候它是不会直接跳出的,由于这不是什么异常的错误,可能是逻辑上的错误。依照分层的思想。假设发生在UI层,我们为了让UI曾职责单一,不进行不必要的推断语句,仅仅负责用户操作的响应、用户数据的传递和各种显示的功能,逻辑上不做太多的推断和处理,这时候你能够使用抛出异常来使你的程序发生异常,直接跳到catch那里。
比方上面的代码
- Dim Update_Info As String = "update " & Table & "set " & FieldAndContent '改动的sql语句
- Dim DBConnectStr As New ConnectStringDAL '数据库连接字符串
- Dim DBConnection As New SqlConnection(DBConnectStr.ConnectString) '数据库连接
- Dim DBCmd As New SqlCommand(Update_Info, DBConnection) '运行改动语句
- Result = "成功改动了:" & DBCmd.ExecuteNonQuery & "行"
- Catch ex As Exception
- Result = "在改动数据过程中发生了错误:" & ex.Message
在连接数据库之前抛出了异常,注意。这个异常是你人为 的制造的。它也属于异常的一种类型,所以这个时候它就不运行连接数据库以及以下的代码直到catch为止,他会运行catch以下的代码,并显示异常的原因。值得注意的是finally后面的语句,无论程序是否会出现异常。它肯定是会运行的,一般自己衡量一下该运行什么程序好。一般都会写一些释放资源的代码。
重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)...相关推荐
- 重构机房收费系统总结1之配置文件+反射+抽象工厂
在重构机房收费系统之前就一直听说这次重构要用反射+配置文件.深远的作用不知道,可是在这次重构用到,目的还是挺明白的:就是为了更换数据时方便,遵循开放-封闭原则.攻克了可维护和可扩展的问题. 以下就以机 ...
- 重构机房收费系统(二)
接上篇<机房收费系统重构(一)> 二.概要设计 完成了用例图,并用结合用例图完善了一下需求分析说明书,忘记是第几次修订需求分析说明书.有了用例图,很自然就进入了概要设计阶段.我认为这一阶段 ...
- 重构机房收费系统(一)
从10月1号开始重构学校机房收费系统,没想到这次重构,推翻,再重构--用了两周时间. 这次整体架构采用三层,并融入了一些设计模式. 下面介绍这次重构的过程: 一.从UML用例图开始 对于机房收费系统的 ...
- 重构机房VB.NET机房收费系统个人重构版你都学会了什么(之一)
每日一贴,今天的内容关键字为重构机房 在VB.NET机房收费系统个人重构版时你都学会了什么?在开始第二遍的机房收费系统个人重构时,我发明不知不觉竟接触了很多很多之前不晓得的货色,也学到了很多新知识.下 ...
- vb.net机房收费系统重构——存储过程的使用
在敲写七层登陆过程中,接触了存储过程的概念,但当时还没使用.在正式的重构过程中,一点点添加,将存储过程也添加到了重构中.才正式了解了存储过程. 首先 [存储过程的概念] 存储过程Procedure是一 ...
- 机房收费系统重构(五)—登陆窗口完整版
在上上篇.<机房收费系统重构(3)>.中主要是介绍了自己关于DAL层,工厂层.以及接口层,还有实体层的理解.可是好多读者再问我.你的代码呢,我在这解释一下.就是我仅仅是写出关于那 ...
- 机房收费系统个人重构版:暮然回首,灯火阑珊
[背景] 在蹒跚中自己的机房收费系统个人重构版已完结:回望这一路征程,感慨颇多:快乐过,痛苦过:紧张过,放松过!真可谓:酸甜苦辣,五味杂陈. [比一比] VB.Net版个人重构版比VB版机房收费系 ...
- 机房收费系统个人重构版:软工文档中那些图
[前言] 图,提到这个字的时候脑海中就会出现许许多多的图像,它的重要性相信大家都明白,相比于文字来说它更生动形象正好符合人类大脑的记忆规律:很多人也知道动画片制作原理也是用一张张图片只不过转换的 ...
- 机房收费系统个人重构版:透过文档谈文档驱动开发
[背景] 机房收费系统个人重构已接近尾声,在最后阶段自己去补文档以及其中涉及到的图!经过将近一周的奋战将其完善,并最终通过师父的验收.透过这次机房重构写文档和画图,自己感触颇深,在此与大家共享. [文 ...
最新文章
- 丁磊建议将少儿编程纳入学业水平考试,是少儿编程太热,还是起跑线焦虑
- java多层catch语句_Java异常之catch语句块
- File.separator或File.pathSeparator
- 开发做甲方还是乙方_建筑行业的职场小白求职时是选择做甲方还是乙方?
- Windows sever 2008 动态硬盘数据恢复
- 第一次作业:深入源码分析进程模型
- Tiny Jpeg Decoder (JPEG解码程序) 源代码分析 2:解码数据
- SpringBoot多跨域请求的支持(JSONP)
- 一枝穿云箭,千军万马来相见——致2015届电子科大信软学院新生
- css建立一个简单的设备登记表,员工登记表格的CSS块
- 怎么更改网络中的计算机名字,计算机名称如何更改?电脑的计算机名修改方法...
- 【转载】JavaWeb之ssm框架搭建中遇到的问题
- P/O矩阵、R/D矩阵、IPO图、C/U矩阵知识点
- react+amcharts5柱状图demo
- 华为HCIP-DATACOM(821)411-440
- 微信小程序 延时执行 设置固定时间间隔
- 二分查找、求上界和下界(包括内置函数lower_bound、和upper_bound的使用)
- 110 李俊民 新庵
- Netflix创始人:我不要求996,照样市值万亿!
- 《java编程思想》读书笔记【前言】
热门文章
- 变压器符号_变压器电路图符号大全
- getOutputStream() has already been called for this response
- webpack4 高手之路 第四天
- Java泛型解析(02):通配符限定
- Delphi下使用OpenOffice+JodConverter+SWFtools进行文件转换
- 统计学习方法|K近邻原理剖析及实现
- MAC能登录微信,浏览器连不上网
- C++ 之虚函数的实现原理
- SQLServer之创建AFETER DELETE触发器
- 图解TCP/IP(第5版)PDF