作者poopoo888888 (阿川)
看板Programming
标题Re: [问题] 请问exception能用if else取代吗?
时间Tue Aug 16 10:20:22 2011
: 以前没有 exception 的时候,常常会看到这种程式码
: (-1这个数值常用在发生错误时回传,而 perror 可以印出错误原因)
: if (function1(xxx) == -1) {
: perror("ERROR: ");
: exit(1);
: }
: if (function2(yyy) == -1) {
: perror("ERROR: ");
: exit(1);
: }
: 如果有了 exception :
: try
: {
: function1(xxx);
: function2(xxx);
: }
: catch (Exception e)
: {
: Console.WriteLine(e.Message);
: Console.Exit(1);
: }
: 程式码变得比较简洁、而重覆的程式码也变少了
: 而且把所有「正常执行」的程式与「错误处理」的程式分开
: 对架构更能一目了然
: C语言就是完全没有 exception,全部都要用 if-else 来写
: 它仍然是很好用的程式语言,不过有的时候真的会觉得很烦...XDD
谢谢这位大大
所以我最後所问「还是说exception的确完全可用if else取代
但是用exception有其他方便的地方?」
这段叙述是对的罗!
但我总觉得我会写出「用if else除错」跟「用exception除错」混杂的程式码
是不是if else只用来处理合法状况 其余的全部交给exception比较好
而不要试图用if else除错?
还是有什麽使用这两者上的时机与诀窍?
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.231.25.104
1F:推 kdjf:Python_syntax_and_semantics#Exceptions 140.112.245.32 08/16 14:34
2F:→ kdjf:on wikipedia 140.112.245.32 08/16 14:34
3F:推 Ross0916:for me exception is like "break" 129.67.176.18 08/16 15:34
4F:推 aecho:我觉得常常蛮难抉择的…所以决定旁听了。XD 219.85.43.30 08/16 19:23
5F:推 jtmh:其实会用 exception 还有种状况是:在你本身 218.175.154.99 08/16 22:33
6F:→ jtmh:的函式里是无法确定该怎麽处理该状况的,所以 218.175.154.99 08/16 22:34
7F:→ jtmh:你必须丢出 exception 给外面 call 你的人处 218.175.154.99 08/16 22:35
8F:→ jtmh:理才行。 218.175.154.99 08/16 22:35
9F:→ jtmh:不过以往还未有 exception 机制时也是可用特 218.175.154.99 08/16 22:38
10F:→ jtmh:殊的回传值代替就是了。 218.175.154.99 08/16 22:38