原创
异常处理
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语句,依次类推,如若依旧没有则程序也就死掉了。其实基本上虽然计算机语言有很多种,但大部分的思路都是相通的。
用户1075677 2013-10-25 16:39
用户1602177 2013-10-24 16:06