2014-09-26 80 views
1

處理我們假設下面的代碼:終止拋出異常

​​

N3797,§18.8.3.1[terminate.handler/2:要求的行爲:一個 terminate_handler應毫不 終止程序的執行返回給調用者。

這是未定義的行爲。事實會發生什麼?

+0

任何事情都有可能與UB發生的行爲,你的冰箱可能發生爆炸。 – 2014-09-26 16:10:48

+0

未定。因此,爲什麼中止? – dsaads 2014-09-26 16:13:43

+0

沒什麼好說的。 [ – 2014-09-26 16:14:40

回答

2

這是未定義的行爲。事實會發生什麼?

你不知道。

您可以檢查生成的機器碼以確定給定平臺上實際發生的情況,但不會。 UB意味着你離開了網格,只要C++標準可能發生。下一次你修補你的編譯器,鏈接器,glibc或者其他一些事情時,你可能會得到完全不同的行爲。您甚至可以從「逐個運行」中獲得不同的行爲。

有編程幾個「決不會」,但我將致力於從不刻意寫,依靠未定義行爲

+0

+1結束語。 – 2014-09-26 16:37:06