異常處理的方法有哪些 C語言異常處理和結(jié)構(gòu)化異常處理有什么區(qū)別?
C語言異常處理和結(jié)構(gòu)化異常處理有什么區(qū)別?所謂的“正常”C異常處理使用三個(gè)額外的C語句:try、catch和throw。這些語句的功能是允許程序(異常處理程序)在正在執(zhí)行的程序中發(fā)生異常時(shí)嘗試找到程序
C語言異常處理和結(jié)構(gòu)化異常處理有什么區(qū)別?
所謂的“正常”C異常處理使用三個(gè)額外的C語句:try、catch和throw。這些語句的功能是允許程序(異常處理程序)在正在執(zhí)行的程序中發(fā)生異常時(shí)嘗試找到程序的安全出口。異常處理程序可以捕獲任何數(shù)據(jù)類型上的異常,包括類C。這三個(gè)語句的實(shí)現(xiàn)基于ISO wg21/ANSI x3j16 C異常處理標(biāo)準(zhǔn)。Microsoft C支持基于此標(biāo)準(zhǔn)的異常處理。請注意,此標(biāo)準(zhǔn)僅適用于C,不適用于C。結(jié)構(gòu)化異常處理是Microsoft C/C編譯器的函數(shù)擴(kuò)展。它最大的優(yōu)點(diǎn)是同時(shí)適用于C和C。Microsoft的結(jié)構(gòu)化異常處理使用了兩種新結(jié)構(gòu):try except和try finally。這兩個(gè)結(jié)構(gòu)既不是ansic標(biāo)準(zhǔn)的子集,也不是父級,而是異常處理的另一個(gè)實(shí)現(xiàn)(微軟將繼續(xù)致力于此)。Try-except結(jié)構(gòu)稱為異常處理,Try-finally結(jié)構(gòu)稱為終止處理。Try-except語句允許應(yīng)用程序在發(fā)生異常時(shí)檢索機(jī)器狀態(tài)。它給用戶顯示錯(cuò)誤信息或調(diào)試程序帶來了極大的方便。當(dāng)程序的正常執(zhí)行被中斷時(shí),try finally語句使應(yīng)用程序能夠確保執(zhí)行cleaner。盡管結(jié)構(gòu)化異常處理有其優(yōu)點(diǎn),但也有其缺點(diǎn)——它不是ANSI標(biāo)準(zhǔn)。因此,與使用ANSI異常處理的程序相比,使用結(jié)構(gòu)化異常處理的程序的可移植性較差。如果您想編寫一個(gè)真正的C應(yīng)用程序,最好使用ANSI異常處理(即try、catch和throw語句)。