异常处理——程序员的必修课

        最近在写一个比较小的系统——学生信息管理系统,由于是第一次比较完整的去做一个系统,所以好多的问题都没有考虑到。虽然这个系统只是一个很小的系统,有17个窗体外加一个模块,但是通常系统所具备的功能它都有,正所谓麻雀虽小五脏俱全。

        最初接触异常处理是在C++语言的学习中,虽然很早就接触过,但是在写程序或者做系统的时候,对于异常还是不够敏感,因此会出现忘记做异常处理的情况。这次做学生信息管理系统,在导师进行验收时,各种报错和异常到处都是。

        每一次系统的崩溃和瘫痪,都深深的刺痛我的心,让我深深的领悟了异常处理的重要性。啊,多么痛的领悟,痛是提高的脚步。
        每种高级程序设计语言都有自己的异常处理机制,在进行程序设计时,不仅要保证程序在一般情况下运行正确,还要充分考虑到各种可能出现的问题,比如用户操作不当、计算机运行环境的限制等情况。在这些可能出现的情况下,程序应有适当的处理,不轻易出现死机,发生数据丢失等灾难性后果,以提高程序的健壮性。

        当然有些出错是我们无法预料的,但是对于可能出现的错误或者异常,一定要对其进行相应的处理。以Visual Basic语言为例,程序报错或者抛出异常,应该能捕获错误或者异常,常用的方法有两种:一种是使用On Error GoTo语句,转移到别的代码上去执行;另一种是使用On Error Resume Next语句,不中断代码的执行,也不转移到别的代码上去执行,而是忽略或者跳过该错误。

        虽然这两种方法对错误做了处理,但是本质上并没用消除异常,而是忽略,因此作为一个专业的程序员,应该编写错误处理程序对错误进行处理,使用On Error GoTo语句将执行转移到错误处理程序上来。

        比如在对系统进行测试的时候,发现当数据库中无任何记录的的情况下,再执行删除操作,就会报错,接着程序就终止了,那么我解决的办法是在执行删除操作之前,先对数据库中相应的表进行判断是否记录为空,若为空则弹出提示框提醒用户,这样就避免了错误或者异常。

        还有就是一些逻辑bug,比如在listbox中列出所有的数据,但是用来遍历的循环语句

        While (mrc.EOF = False)

                  listAllcourse.AddItem mrc.Fields(1)

                  mrc.MoveNext

        Wend

        每进行一次单击事件,listbox中就列出一次数据库的的数据,造成数据重复的状况。

异常处理——程序员的必修课_第1张图片

        那么可以添加if语句进行判断,但是判断出来后怎么退出循环是个问题,因为大家都知道while……wend循环无法中途跳出。所以就要换一种循环,当型循环Do While……Loop。修改后的程序如下:

        Do While (mrc.EOF = False)

                If listAllcourse.ListCount = mrc.RecordCount Then

                      Exit Do

               Else

                      listAllcourse.AddItem mrc.Fields(1)

                      mrc.MoveNext

               End If

        Loop

        这也是一个处理bug的例子。从某种意义上来看,调试代码要比用代码实现系统或者软件的功能重要得多,而调试的重点内容就是异常处理。

        程序员的成长之路很漫长,但是有些路必须要走,其中的一段就是异常处理。

 

你可能感兴趣的:(异常处理,数据库,程序员,编程语言,异常)