![]() |
1
2
既然还没有人回答这一问题,OP认为可以接受,我就把我的帽子扔到戒指里去。
没有 概念的 您所提供的两个代码片段之间的差异。在这两种情况下,都会测试一个条件,如果满足,则会将一条消息抛出到程序的另一部分以进行处理。
谢谢你,子母弹为下面的咆哮打开了大门。 <RANT & GT;
每个
编程构造具有滥用的可能性。教条式的迫害
简单地说:
</rand & gt; 为了您的阅读乐趣: http://en.wikipedia.org/wiki/Goto
接着说,
也就是说,自从准将BASIC以来,我个人还没有找到goto的实际用途,但这既不是这里也不是那里。-) |
![]() |
2
13
throw/catch比goto灵活得多:您可以从调用引发异常的代码的函数中进行捕获。此外,所需的析构函数被自动调用。 |
![]() |
3
7
我想你应该换个角度问这个问题:你为什么要用
你也可以问“为什么要用
|
![]() |
4
5
在您的示例中,当您检查错误条件并引发异常或调用时,实际上没有区别。
其中例外 是 如果调用的方法可能有错误状态,但无法自行处理,则很有用,如以下伪代码所示:
这个
然后返回加法的结果。 这意味着您的主代码流显示了通过程序的预期路径。 |
![]() |
5
4
例如,假设有一个数据库类在出错时引发异常。除了例外,您可以捕获该错误,并在呈现错误页之前执行其他操作(例如清理分配的资源,或者如果使用非事务性DB类型,则可以“回滚”先前的更改)。如果使用goto,就没有机会这样做,因为goto会呈现错误页面。
记住,保持代码的可重用性和灵活性。
|
![]() |
6
3
根据本协议:
|
![]() |
7
2
实际上,您的两个代码段之间的区别在于,您必须花更多的时间用“goto”代码向其他程序员解释自己。 无论好坏,大多数程序员都认为您应该 从未 使用GOTO。也许您可以证明这是没有根据的,并且您的goto代码是实现该函数的最佳方法。即便如此,你还是要和同事或任何与你合作的人打交道,让他们接受。 如果你是一个人工作,没有人会看到你的代码-使用你喜欢的任何东西。但是,如果你是在一个团队中工作,有时阻力最小的路径是最谨慎的。 |
![]() |
8
2
“错”的是
首先,我们开始看到脚本从纯解释代码移动到编译的字节代码。很好的例子可以在任何地方找到,比如python、perl 6、scala(lift)、clojure(compojure)。甚至PHP也有字节代码编译器。自从
即使您没有一个完整的编译器,当程序员使用具有更多结构的控制机制时,解释器也可以大大帮助程序员。例如,
此外,如果您的语言允许您声明
goto还要求程序员从错误中恢复。想象一下,如果您有这样的代码(从片段中抓取并编辑):
这里的问题是程序员必须做正确的事情。如果他忘了
最后,我的个人经历让我不喜欢
作为这个答案的后记,我不认为“错误”是正确的描述方式
|
![]() |
9
1
|
![]() |
10
0
我不像很多人那样讨厌goto,但我认为它的主要问题是它不局限于特定的“范围”。对于每个其他的控制结构,您知道它从哪里开始,从哪里结束。另一方面,goto标签可能被放置在更不可预测的地方。当然,您可以搜索标签,但它会破坏可读性。 当然,一切都取决于它是如何使用的。 |
![]() |
11
-3
也不要使用。在大部分代码周围使用“while(1)”和“break”语句,以便跳到末尾。
|
![]() |
Kurogami · 错误C2059:语法错误:“}”C++ 7 年前 |
![]() |
Bhaskar Bhuyan · 如何在python中循环回特定点 7 年前 |
![]() |
Sneftel · 为什么在constexpr函数中不允许goto? 7 年前 |
![]() |
Mazhar Ali · 批处理文件系统在循环后找不到文件 8 年前 |
|
WhiteTail · 为什么“goto”被视为不好的形式? 8 年前 |
|
Trevor Thorpe · 这是使用goto的安全方式吗? 8 年前 |
![]() |
AkiEru · PHP正在摆脱“if”条件并继续下一部分 9 年前 |
|
djj19 · Rainflow算法-Fortran到Matlab的转换 10 年前 |