本文将作者对异常的理解和认识。利用异常控制程序流程,利用异常做数字的判断函数,异常是帮助程序员写出好代码的捷径。

从触摸反常开端我就弄不理解她,不会用她,想在体系中是反常机制发挥的***,进行了许多测验,运用反常控制程序流程,运用反常做数字的判别函数,运用反常消除体系中或许呈现的恼人的反常提示框,为了更好了运用反常看了许多关于反常的文章,直到有一天看到了一句话——“永久不要去向理你不知道怎样处理的反常”,这才茅塞顿开,感觉自己一向在用强壮的反常机制干一些歪门邪道的是事,更谈不上了解反常在程序中的位置和含义,反常其实一种陈述机制,“她以一种不行逃避的办法陈述程序中所呈现的问题”,她协助程序员走向正确的路途,她忠诚的向程序员供给过错陈述,她期望有谁能注重并处理掉她陈述的问题,哈,真不敢幻想,没有了反常机制该怎样编制高质量的程序!下面就个人的了解和观点瞎说几句,敬请各位批评指正,不胜感激!

浅谈对程序开发中反常的了解和知道(早期进行程序开发过程中存在不少问题)  异常 程序开发 第1张

反常的作业原理,在有问题的当地发生反常,立刻中止当时的作业,转向反常处理代码,假如找不到反常处理代码,就会见反常向一层陈述,上一层接到反常会做相同的事,转向反常处理代码,或许再将反常向上陈述,这样逐层间过错传递出去,直到有一层处理了反常或是一向陈述给程序的运用者——用户。这个层便是调用栈,当用户A运转程序B,B从函数C开端履行,调用函数D,再调用函数E,再调用函数F,这时F呈现了反常,那么这个反常的调用栈便是A(栈底)—〉B—〉C—〉D—〉E—〉F(栈顶),这个反常就会沿着这个栈从栈顶开端向栈底的方向陈述,假如在函数C中有对这个反常的处理代码,那么这个反常的陈述链便是F—〉E—〉D—〉C。能够看出,假如在完好的调用栈中没有处理这个反常的代码,用户A就成了反常陈述的结尾,向windows界面体系,会弹出一个恼人的音讯对话框哈。

那么用户A向谁陈述呢,哈哈,这个现已不属于程序的范围了,感觉用会对程序而言如同天主相同,倾诉苦楚现已让天主都听到了,就称心如意了哈哈,看来程序真忠诚哈哈。关于反常这个特性,也能够比方成部属向上级陈述问题,假如部属知情不报,问题就严峻了,你要是领导知道部属是这样的八成果踢了他,相反假如你有一个陈述机制健全的部属部队,哈哈你就神威了。日本企业文蛤中有个主旨——联络,商谈,陈述,其实便是想让职工都具有向上级陈述的习气。现在再看看程序,哈哈,你不必给她们灌注什么企业文化,不必她们叙述什么陈述的重要性,她们自身便是忠诚陈述的,假如把程序员比作企业老总,那么程序便是练习一队有素的职工。

怎样处理反常。在这儿有个准则便是“永久不要去向理你不知道怎样处理的反常”,也便是只处理你知道怎样处理的反常,对那些你不知道的反常有必要集思广益,并积极地向上级陈述。什么叫知道怎样处理呢?先说一下处理反常有哪些办法,大体有,弹出提示音讯框(这个音讯框不同于那个恼人的反常陈述音讯框,她是捕获反常后,依据处理的详细环境程序员自动编写的友爱的提示音讯框),记载过错日志,吞掉,做善后作业等等,那么呈现反常时就要站在呈现反常的模块的立场上考虑一下我应该挑选哪种处理办法呢?假如不能做出挑选就挑选不处理,即向上级陈述。

举个比方,函数Fun1是创立并回来一个活动的数据衔接目标的办法,他承受一个数据库衔接字符串,假如调用者(上级)给他一个过错的衔接字符串,这时Fun1创立不了衔接目标,发生了一个创立不了衔接目标的反常,那么这时他应该怎样处理这个反常呢?弹出友爱的音讯框?说什么友爱,Fun1底子就不知道是什么原因使他接纳到了过错的衔接字符串,弹一个“衔接字符串有误”,用户必定都有杀你的心,这个提示和用户的事务逻辑有嘛联系!记载过错日志,这个还行,可是记载下来的文字无非便是“衔接字符串有误,衔接字符串是:SQL……”,好点的话,从衔接字符串中看出了问题,一般状况下还得依据代码上下文去找问题原因。这个办法不是不行是欠好。吞掉,哈哈开什么打趣,你既创立不了衔接,又不吱一声,想让调用者疯了呀,这个必定不行。做善后作业,行,的确应该整理一下现场,以免浪费资源,可是仍是没吱一声,所以这个办法做的不完全。没招了,哈,其实上面的剖析给咱们指明晰一条路,协助咱们祛除了过错的挑选,这条路便是向上陈述,或是不加任何出来代码,或是记载日志,做些善后,再从头将反常抛出。

那么什么时分就知道怎样处理反常了,这就得看实践的状况和用户的要求了,这句话等于没说,就像其他的标题夺目但给出的定论却不置可否文章相同,哈哈,这儿能够给几个主张,

1,一般地,底层模块或是办法中不要处理反常,

2,编写公共模块、DLL等是,不能选用弹出对话框等依赖于渠道,结构的办法处理反常,

3,编写公共模块、DLL等时,有必要在运用文档中注明每个办法特点或许抛出的反常。

4,永久不要写 try 这样的句子。

  1. {
  2. }
  3. catch(Exception)
  4. {
  5. onothing
  6. }

自界说反常。理解了反常的原理和机制后,就能够自己界说反常了,这样的实践往往在编写控件、公共模块、DLL等的时分,用过错编号在网上查找一下,能找出一大堆关于过错代码的描绘。其间大多数是M(icro)S(oft)拟定的,MS 从操作体系到各式各样的结构都有对各种反常的编号,对每种反常做出了详细的界说,假如你还用过像Spread等商业控件,也能够看到他里面的各式各样的反常界说,也便是说咱们自己也能够界说反常,在必要的时分,这样就能够让自己写的模块也加入到练习有素的职工部队中了。至于怎样界说反常,详细的编成言语有详细的做法,比方C#中指定一反常一个从Exception承继来的类,VB中反常是个全局变量等等,拜见感兴趣言语的语法攻略就能够了。

对反常的从头认识,一向以来许多人都以为反常对错常可怕的,憎恶的,她是过错的化身,她有恼人的弹出对话框,弄得用户跟凶煞恶神似的哈哈,其实这些都是误解,反常一向默默地忠诚的陈述着程序中呈现的严峻的不行逃避的问题,她为了程序、体系的正确性、严谨性呼喊你,期望你注重这些问题,期望你用才智处理这些问题,她是多么的心爱,又是多么的崇高,从来没有由于对她的误解而抛弃自己的任务……(哈哈,扯淡,煽情了……)。反常很重要,咱们更好学会怎样去运用她。

【修改引荐】

  1. 针对Hibernate load办法发生反常的处理办法
  2. 古怪的Eclipse Debug反常
  3. Windows CE反常和中止服务程序初探
  4. 怎样更合理的运用Java中的反常抛出
  5. PHP5中的反常处理详解
转载请说明出处
知优网 » 浅谈对程序开发中反常的了解和知道(早期进行程序开发过程中存在不少问题)

发表评论

您需要后才能发表评论