造价通

反馈
取消

热门搜词

造价通

取消 发送 反馈意见

结构化编程例外情形

2022/07/16102 作者:佚名
导读:结构化编程异常处理 子程序很少会有一个以上的进入点,相对的,有时子程序会有一个以上的结束点,表示剩下的程序不需执行,或因为一些原因,造成无法执行后续的程序。 以下是是一个由档案中读取资料并处理的程序范例: open file; while (reading not finished) { read some data; if (error) { stop the subprogram and in

结构化编程异常处理

子程序很少会有一个以上的进入点,相对的,有时子程序会有一个以上的结束点,表示剩下的程序不需执行,或因为一些原因,造成无法执行后续的程序。

以下是是一个由档案中读取资料并处理的程序范例:

open file;

while (reading not finished) {

read some data;

if (error) {

stop the subprogram and inform rest of the program about the error;

}

}

process read data;

finish the subprogram;

其中“stop and inform”的步骤可以利用多种方式达成,包括产生一个异常(exception)、利用return指令回到上一层的程序、使用配合标记的break指令,或是使用goto。当子程序有二个结束点时,就违背了戴克斯特拉的结构化编程原则。但此情形下若强制要撰写只有一个结束点的子程序又相当麻烦,而且若有几个不同的错误处理,错误产生后有不同的清除方式,单一结束点的程序会相当难以阅读及理解,甚至比未结构化使用goto的程序相当。

许多编程语言就提供了在结构化编程中产生多个结束点的方式。C语言允许使用go指令来产生结构的多个结束点,C 还可以用throw产生异常,在结构外再用catch进行异常的处理,有些语言则有配合标记的break指令(类似一般的break指令,但可以跳出不只一层的结构)。

结构化编程状态机

有些程序(例如语法分析器或是处理通讯协定的程序)有许多的状态(英语:state (computer science)),因此程序进行的过程会在各状态中切换,此架构不容易简化成基本的控制结构。可以将此架构各状态下的程序分别独立为子程序,再用一个变量表示当前的状态,(可参考trampoline(英语:trampoline (computers))),另一种作法是用goto的方式切换到新状态对应的程序。2100433B

*文章为作者独立观点,不代表造价通立场,除来源是“造价通”外。
关注微信公众号造价通(zjtcn_Largedata),获取建设行业第一手资讯

热门推荐

相关阅读