原创 异常处理

2013-10-23 21:51 1343 22 24 分类: 消费电子

 

最近在学习Lazarus的过程中,觉得里面的异常处理机制很有用处,于是就和C++中的异常处理作了下比较。
异常指的是程序在编译和运行过程中出现的异常。编译中的异常通过IDE能快速的看到并做出改正,但如果是在程序交付运行后而出现的异常则是很难处理的,这就要求程序员在编程的过程中就应该要想到可能出现的异常情况,并根据自己的要求做出相应的处理,这对于编程来说显得十分重要。
首先说说Lazarus(基本上和Delphi类似)中的异常处理机制,Lazarus本身就提供了很多的异常类,同样用户也可自己定义自己的异常类。和大多数语言一样触发异常的方式分为程序系统自动异常和程序员自己触发异常。由程序系统触发的异常部分情况下程序系统会作出处理,但很多情况下如果程序系统不作处理那么程序可能就非法停止了。Lazarus中提供了两种异常处理语句:
1.try                2.try 
  statement            statement
  finally              except
  end                  (else)
                       end
第一种代表如果在try..finally块内出现了异常则会跳出try..finally块而去执行finally..end块,但要记住的是不管在try..finally块内有无异常的发生finally..end块都会执行。第二种基本上和C++中的try..catch..相同,主要用于程序员自定义的捕捉产生的异常而进行处理。对比了一下两者原理基本上就是一样的,C++中采用的方法是在函数本身只产生异常不处理异常,是在其上一级内去处理异常,如上一级也不能处理则依次类推到最高一级,如最高一级也没有异常处理语句则程序就死掉了。Lazarus中如果在except..end块中没有异常处理语句,则在最近的地方继续寻找try..except语句,依次类推,如若依旧没有则程序也就死掉了。其实基本上虽然计算机语言有很多种,但大部分的思路都是相通的。
 

文章评论2条评论)

登录后参与讨论

用户1075677 2013-10-25 16:39

程序概念分享. good!

用户1602177 2013-10-24 16:06

很好的分享,谢谢~
相关推荐阅读
huhaomcu_856934054 2014-08-19 20:54
uCOS-Ⅱ
启动uCOS-Ⅱ的学习与移植!...
huhaomcu_856934054 2014-07-20 10:08
多通道电路原理图
简单说说关于Protel中提供的多通道原理绘制与PCB布局布线. Protel(不知99SE是否可以)有提供多通道电路原理图的设计,这项功能在有些方面还是很有用处的,比如说:当部分原理图在一张图...
huhaomcu_856934054 2014-04-07 09:10
IAR制作工程模板
我个人学习新的MCU过程一般会是如下过程,建立一个个的DEMO工程,每个DEMO工程学习一个外设,所以每个DEMO程序都很简单,但是在建立一个个DEMO程序的过程中,会发现开始的步骤基本上就是相同...
huhaomcu_856934054 2014-03-14 18:06
新公司与老公司的比较
在新公司上了几天班真心有点想念以前的老公司了! 下面来比较比较新公司与老公司吧: 1.业务量。新公司的项目更多,人员更多,涉及的面也较广,整体的技术水平要大大强于以前的老公司。以前老公司里...
huhaomcu_856934054 2014-02-24 15:01
辞职了!
辞职了,但愿柳暗花明又一村!!...
huhaomcu_856934054 2014-02-21 09:22
回来啦!
之前因为身体原因一直在家休息,直到今天才来武汉上班。但愿今年个人的工作能有所上升!...
我要评论
2
22
关闭 站长推荐上一条 /2 下一条