S Shepherd Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-24 #1 DELPHI的异常处理机制和用函数返回值的方式判断错误 到底有多大差别,谁好谁坏
Y yoking Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-24 #3 异常出现马上就会退出函数体 object pascal 与 c不一样,没有 return 马上退出函数体 如果利用返回值退出,必须用result:= ;exit;两条语句 利用异常raise exception.create('');立即退出函数体,不管是否有返回值 exit是一个特殊的异常,不产生异常消息
异常出现马上就会退出函数体 object pascal 与 c不一样,没有 return 马上退出函数体 如果利用返回值退出,必须用result:= ;exit;两条语句 利用异常raise exception.create('');立即退出函数体,不管是否有返回值 exit是一个特殊的异常,不产生异常消息
C creation-zy Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-25 #4 我一般采用的是函数返回值的方案,因为通常情况下,异常处理开销要大一些,并且不用 异常的代码看起来更加清晰,参考一下Windows API——它们绝大多数都是使用返回值的。 当然,也不能一概而论。如果涉及到资源的释放,我一般使用try...finally...end,还有一 些在使用异常之后程序更加高效的情况下(比如退出到多层调用的入口、返回特殊的异常信 息等等),我们是不必忌讳使用它的。 另:exit并不是异常,abort方法才是产生一个哑异常——我经常用它跳出多层递归——只要 在最外层开始调用时用 try...except...end 即可。
我一般采用的是函数返回值的方案,因为通常情况下,异常处理开销要大一些,并且不用 异常的代码看起来更加清晰,参考一下Windows API——它们绝大多数都是使用返回值的。 当然,也不能一概而论。如果涉及到资源的释放,我一般使用try...finally...end,还有一 些在使用异常之后程序更加高效的情况下(比如退出到多层调用的入口、返回特殊的异常信 息等等),我们是不必忌讳使用它的。 另:exit并不是异常,abort方法才是产生一个哑异常——我经常用它跳出多层递归——只要 在最外层开始调用时用 try...except...end 即可。
S Shepherd Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-25 #5 to creation-zy: 我现在就是用的函数返回的那种种方式,但这样的东西需要太多的判断,程序里到处都是条件语句了。 而且我看到好多书上都说,异常处理机制如何的好。说可以简化程序,更有条例。 但我却不明其议。
to creation-zy: 我现在就是用的函数返回的那种种方式,但这样的东西需要太多的判断,程序里到处都是条件语句了。 而且我看到好多书上都说,异常处理机制如何的好。说可以简化程序,更有条例。 但我却不明其议。
L lxn2philips Unregistered / Unconfirmed GUEST, unregistred user! 2003-01-09 #6 delphi的异常处理机制是写在编译器里面的 你说那个更好些?
T tseug Unregistered / Unconfirmed GUEST, unregistred user! 2003-01-09 #8 写代码可读性为优先, 然后考虑效率.....如果多层判断返回值会把代码的可读性 搞坏, 那还是用异常吧, 如果你的所有代码都是用的返回值, 那也不必在一个地方 用异常...这时候一致性就很重要了...
J journer Unregistered / Unconfirmed GUEST, unregistred user! 2003-01-09 #9 觉得在编译器里调试的异常处理是编译器的 只有执行EXE文件才能正确判断结果 最好做完善的异常处理
S Shepherd Unregistered / Unconfirmed GUEST, unregistred user! 2003-01-09 #13 我以前的代码都用的返回值 现在我开始大量使用异常处理了 确实可以节省很多代码 但我总觉的这样作丢掉了什么东西 经验不够 确实我觉得两种方法很难取舍