2 btnzf BTNZF 于 2014.11.21 00:37 提问

函数处理数据到一半的时候出错,对于已经处理过的数据要怎样处理?丢掉?还是返回?

大家好,我有一个疑问,是这样的:
函数在处理数据的过程中发生了错误,比如malloc返回NULL,这个时候函数返回-1表示出错,但对于已经处理一半的数据是丢掉呢?还是一并返回了,让调用者得于不完全的数据,自己进行处理?

6个回答

sky_walker85
sky_walker85   Rxr 2014.11.21 11:04
已采纳

还是需要根据该函数的功能来确定具体怎么办,比如像你提到的malloc函数,当返回-1出错时,那该函数已经确定的内存该怎么办呢,不能被重新分配了吗,肯定不行啊。再比如像数据库中的更新操作,在一个事务内的话就要回滚了,通常情况下,中途出错了,要通知调用者出错了,而函数要确保数据不会因为错误而被修改

xuzuning
xuzuning   Ds   Rxr 2014.11.21 08:22

既然你已经 返回-1表示出错 了,那么已经处理一半的数据当然是丢掉了

bdmh
bdmh   Ds   Rxr 2014.11.21 09:17

这个看你们的需求,没有规定该怎么样,需求让你保存,你就保存,让你丢掉你就丢掉

caozhy
caozhy   Ds   Rxr 2014.11.21 13:23

要看什么错误,如果这个错误你都不能估计到,那么应该丢出错误而不是继续下去,因为那样程序会进入无法控制的状态。如果异常是你能估计的,那么应该用类似try catch的结构化处理方式分类讨论。

wlsgzl
wlsgzl   2014.11.21 15:24

有的可以丢掉取消更改因为无法继续执行
有的可以继续因为这个错误不影响继续执行
(上面两行是废话)
但是做好是做个日志啦.

BTNZF
BTNZF   2014.11.23 14:05

http://blog.csdn.net/btnzf/article/details/41244971
调用函数的目的就是要得到结果,所以我认为,函数应尽最大的可能提供正确的结果给调用者。

Csdn user default icon
上传中...
上传图片
插入图片