什么是异常?

2015-10-23 16:12:29 +08:00
 Angdo

异常是程序运行中遇到事先没有预料到的事叫异常
还是事先定义好可能出现的意外情况?
异常和 bug 是一样的吗?

2433 次点击
所在节点    问与答
15 条回复
cxbig
2015-10-23 16:18:51 +08:00
程序里异常是 Exception ,通常来说它是一种运行机制,可以由很多原因触发(写错代码、收到错误的反馈等),然后可以通过一定的机制去 catch 然后根据实际情况进行处理。属于比较主动的程序行为。
bug ,算是一种设计失误。写错代码直接报错、设计的算法没有得到正确的结果、逻辑错误等。
scream7
2015-10-23 16:31:07 +08:00
关注中,我对这个也一直有点不了解.
如果我们能预料到 exception,并 catch 住,为什么不直接使用 if 判断,assert 呢?
watzds
2015-10-23 16:42:26 +08:00
异常是难以避免的,可能出现的异常情况
我想它还有一些跳转的功能,向上层抛出等

有些底层就是通过 if else 抛出异常吧
不用异常, ifelse 写起来会很多吧

Java 里的检查异常,还能强制你去关注可能出现的异常情况,你通过返回值,或者全局变量,就没法实现
caoyue
2015-10-23 16:58:15 +08:00
我的理解:
异常是遇到无法处理的情况
举个例子,比如定义返回类型是 int
操作是 a/b ,这时传进来一个 b=0
你要怎么返回?
只能抛出异常了
Angdo
2015-10-23 19:18:04 +08:00
@cxbig bug 不能看成是在一个特定情况下发生的程序异常?
Troevil
2015-10-23 19:20:05 +08:00
异常可以理解为可预料到的 BUG ,
Angdo
2015-10-23 19:21:23 +08:00
@scream7 我的感觉是既然用 exception 那么肯定是一个在其子类定义的异常情况,那么就应该算是事先预料到的可能情况,没有预料到的还能是异常?
Angdo
2015-10-23 19:23:17 +08:00
@watzds 重点是可以预料的意外情况是异常还是无法预料的是异常
Angdo
2015-10-23 19:26:09 +08:00
@Troevil BUG 不算是一种程序异常?
Angdo
2015-10-23 19:35:12 +08:00
@caoyue 重点是可以预料到发生的是异常还是无法预料的是异常
cxbig
2015-10-23 20:04:51 +08:00
@Angdo
Bug 通常形容意料之外的错误、或导致程序中断。 Exception 通常来说是准备好的问题处理机制。
当然,在 OOP 环境里,某个环节没有加入 Exception 的处理,导致程序中断。我们就认为是一个 Bug 。
watzds
2015-10-23 20:30:31 +08:00
“异常”就是处理异常情况的一种机制,分什么可预料不可预料。异常情况出现的时机不可预料,异常情况是否出现最终都是可判断的。你说什么不可预料,举个例子
Angdo
2015-10-23 20:45:27 +08:00
@watzds 就是知道程序可能会发生一种预料到的情况,和可能发生一种没有想过的情况
learnshare
2015-10-23 21:26:13 +08:00
异常就是知道会发生的错误,预先做好处理方案; Bug 就是没考虑到的错误
watzds
2015-10-23 21:45:26 +08:00
@Angdo 哦,你没想到的情况,没处理,没想周全,那就是逻辑错误啊
这就是可避免的,而异常是不可避免的,总有出现的可能。比如网络不通,就可以算异常,你没法儿避免,总有不通的情况。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/230506

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX