C語(yǔ)言是面向過(guò)程的,而C++是面向?qū)ο蟮?/p>
C和C++的區(qū)別:
C是一個(gè)結(jié)構(gòu)化語(yǔ)言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過(guò)一個(gè)過(guò)程,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過(guò)程(事務(wù))控制)。
C++,首要考慮的是如何構(gòu)造一個(gè)對(duì)象模型,讓這個(gè)模型能夠契合與之對(duì)應(yīng)的問(wèn)題域,這樣就可以通過(guò)獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過(guò)程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問(wèn)題的思想方法不一樣。之所以說(shuō)C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”。
C與C++的最大區(qū)別:在于它們的用于解決問(wèn)題的思想方法不一樣。之所以說(shuō)C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”,而就語(yǔ)言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯(cuò)!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒(méi)有好的算法,一樣不行。而且,“C加上好的設(shè)計(jì)”也能寫出非常好的東西。

異常是指不符合規(guī)則或泛化的實(shí)例。它是程序執(zhí)行過(guò)程中可能出現(xiàn)的問(wèn)題的一個(gè)指示。異常處理的機(jī)制提供了一種方法,將控制和信息從執(zhí)行的點(diǎn)處轉(zhuǎn)移到處理程序例程的位置。處理程序例程為程序員提供了一個(gè)機(jī)會(huì)窗口,使其能夠以適當(dāng)?shù)姆绞角趦?yōu)雅的終止或處理它。本文介紹了c++中異常處理機(jī)制的實(shí)現(xiàn)方法。

小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
概述
程序從執(zhí)行某個(gè)任務(wù)開始。如果執(zhí)行特定任務(wù)的代碼運(yùn)行順利,則執(zhí)行下一個(gè)任務(wù),直到程序完成。現(xiàn)在,如果在執(zhí)行過(guò)程中出現(xiàn)任何錯(cuò)誤,代碼就會(huì)回到錯(cuò)誤處理例程中。錯(cuò)誤處理邏輯與程序邏輯混雜在一起。盡管這種混合形式很好,但它使代碼難以讀取、維護(hù)和調(diào)試,即使對(duì)于中等規(guī)模的程序也是如此。
注意,在C中提供錯(cuò)誤處理機(jī)制非常原始。語(yǔ)言本身并沒(méi)有直接的支持。因此,我們?cè)谶@里所做的是訪問(wèn)函數(shù)返回值的低級(jí)形式。按照慣例,如果一個(gè)函數(shù)返回一個(gè)負(fù)值或NULL,則表示一個(gè)錯(cuò)誤。有時(shí),在函數(shù)調(diào)用期間,一個(gè)名為errno的全局變量被設(shè)置為一個(gè)錯(cuò)誤指示器。頭文件的錯(cuò)誤。h定義了許多這樣的錯(cuò)誤代碼。
對(duì)錯(cuò)誤處理使用異常會(huì)帶來(lái)清晰性,并使代碼更簡(jiǎn)單,可以將異常例程與程序邏輯分離。我們可以單獨(dú)處理。這帶來(lái)了巨大的靈活性;除此之外,我們可以決定處理我們選擇的異常,將它們分組到相關(guān)的類型中,或者完全忽略它們。
在c++中應(yīng)用異常處理
在try中包含了c++異常。catch塊。try塊包含異常可能發(fā)生的代碼。它由關(guān)鍵字嘗試定義,然后是大括號(hào)。如果發(fā)生異常,則捕獲處理程序處理該異常并處理該異常。catch部分也是一個(gè)關(guān)鍵字,其次是大括號(hào)。每個(gè)try塊都附帶至少一個(gè)立即跟蹤它的捕獲處理程序。可能有多個(gè)捕獲處理程序與一個(gè)try塊關(guān)聯(lián)。在這種情況下,當(dāng)發(fā)生異常時(shí),適當(dāng)?shù)腸atch處理程序?qū)?zhí)行與所發(fā)生的異常類型匹配的類型。匹配是根據(jù)拋出的異常或其繼承的基類進(jìn)行的。
下面是一個(gè)說(shuō)明基本思想的例子:
異常被設(shè)計(jì)為只處理同步的錯(cuò)誤,如訪問(wèn)數(shù)組的索引、除法、算術(shù)溢出、內(nèi)存分配失敗等等。異步異常,如鍵盤和鼠標(biāo)中斷、網(wǎng)絡(luò)消息接收、I / O完成等,無(wú)法處理,因?yàn)檫@些事件是并行發(fā)生的,獨(dú)立于程序控制流。
一個(gè)異常Re-thrown
程序可以決定部分地處理異常或根本不處理它。在這種情況下,它可以將責(zé)任委托給另一個(gè)處理程序。
小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
在main的try塊中調(diào)用函數(shù)func1。函數(shù)func1也包含一個(gè)try…catch塊。throw語(yǔ)句拋出一個(gè)標(biāo)準(zhǔn)庫(kù)類異常的實(shí)例,稱為異常。catch處理程序(func1)捕獲這個(gè)異常并再次拋出它,然后被main中定義的catch塊捕獲。main中的catch塊與異常無(wú)關(guān),并終止程序。
異常規(guī)范
我們可以為一個(gè)列舉異常列表的函數(shù)創(chuàng)建一個(gè)拋出列表。
這個(gè)函數(shù)只能拋出拋出的異常。如果拋出列表中沒(méi)有指定異常,則異常處理機(jī)制將調(diào)用意外函數(shù)并終止程序。然而,如果我們不提供一個(gè)拋出列表,它會(huì)自動(dòng)調(diào)用意想不到的函數(shù)。(意外函數(shù)的行為可以使用set_unexpected函數(shù)進(jìn)行自定義。有關(guān)這方面的更多信息,請(qǐng)參閱c++標(biāo)準(zhǔn)文檔。
小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
大多數(shù)現(xiàn)代編程語(yǔ)言都有作為其特性之一的異常處理能力。一些語(yǔ)言,比如Java,從一開始就把它牢記于心。由于這個(gè)原因,使用異常處理機(jī)制非常常見。另一方面,c++是C的重構(gòu);異常處理是后面的一個(gè)附加項(xiàng)。而且,這種功能必須以這樣的方式合并,以不影響已經(jīng)存在的絕大多數(shù)代碼,同時(shí)利用該特性的好處。因此,異常處理的設(shè)計(jì)決策在將其納入實(shí)際實(shí)現(xiàn)之前有幾個(gè)方面需要考慮。Andrew Koenig和Bjarne Stroustrup對(duì)c++的文章異常處理奠定了基礎(chǔ),并對(duì)其設(shè)計(jì)原則提供了重要的見解。
服務(wù)器開發(fā)工程師、人工智能、云計(jì)算工程師、信息安全(黑客反黑客)、大數(shù)據(jù) 、數(shù)據(jù)平臺(tái)、嵌入式工程師、流媒體服務(wù)器、數(shù)據(jù)控解、圖像處理、音頻視頻開發(fā)工程師、游戲服務(wù)器、分布式系統(tǒng)、游戲輔助等



