C day14 學習筆記

2022-01-20 06:34:21 字數 1747 閱讀 8661

1、對檔案的分類

(1)文字檔案:每個位元組都是有效的可顯示的ascii碼 ,getline() , >>

(2)二進位制檔案:位元組是連續的,不能用vi , more檢視檔案內容,read按位元組數讀取 , write

100 是整數的100,佔4個位元組

「100」是字元陣列,佔3個位元組

2、異常

(1)人為錯誤:由於程式設計師編碼不當

客觀錯誤:不能避免的錯誤

(2)通過返回值判斷程式的錯誤情況,對呼叫者的要求高,要寫if()else()判斷,而且對於返回值的含義要非常的清楚

所以c++中提供了異常處理機制

3  異常的工作原理:

1) 程式設計師寫的**在出現意外的地方自動產生乙個異常,然後丟擲乙個異常物件。

2) 物件被傳遞到負責異常處理的地方。

throw 1;  //丟擲異常,讓呼叫者處理

3) 由負責異常處理的**進行統一的異常處理。 try{}catch(){}

4) 異常物件包含有意外發生的詳細資訊。

4  異常**的格式:

丟擲: throw 異常名字;

處理: ppt368

try

catch( 異常1 int

) catch( 異常2 const

char*)

程式正常的時候,catch塊什麼也不做,當出現異常的時候,程式從產生異常的地方跳到catch塊中

異常處理完畢之後,不會回到發生異常的地方。

用try{}catch(){}處理異常是一種強制手段,出現異常,程序結束

catch()中的異常型別如果與丟擲的異常型別不一致,則捕獲不到

5  每個catch只能處理一種型別的異常,catch塊會依次執行。

6  catch(...)

可以捕獲任意型別的異常,但是它不能判斷是什麼型別的異常,一般把它放在最後乙個catch塊。

但這種捕獲沒有針對性

7 異常的傳播特性:

層級傳播:異常會逐層丟擲

產生異常之後,程式立即跳轉到最近的一層捕獲異常的語句,如果當前沒有捕獲語句,或者沒有匹配的catch塊,那麼程式會跳出當前的函式回到呼叫的地方。

如果向上跳到了main函式,還是沒有處理異常,程式就會終止程序。

8、封裝異常(1)使用字串描述異常

(2)制定異常號 error no.

(3)disp();            

當捕獲的異常存在繼承關係的時候,要先捕獲子類異常,再捕獲父類異常              

9、內聯類

把乙個類寫到另乙個類的內部

異常一般會做成內聯類 a::exp ,靠字首制定自己的命名空間  

內聯類,private修飾只能在本來中使用,對外是隱藏的,只有public 修飾的才能在外面使用

10、異常總結

(1)檢查錯誤的一種手段

(2)可以用簡單資料型別定義,還可以自定義型別

(3)產生 throw e; 異常物件

處理 try{}catch(異常型別){}  --- 異常型別要與throw丟擲的一樣

(4)傳播

11、銀行專案 --- 物件導向

需求分析的時候,要畫用力圖

biz object 完成業務邏輯

value object 運算元據(account)

menu 收集使用者資訊,使用者選擇的業務

biz 針對某項業務收集資訊

da  提供檔案訪問服務

account 儲存資料

c day14 異常處理。i o操作

異常程式 錯誤的時候產生的一種錯誤,在其他語言中,如python,在程式執行時如果有錯誤的話就會丟擲異常,控制台上會爆出紅色的錯誤資訊,而c 沒有,只是將退出狀態碼設定為不是0,代表程式不是正常退出,這就使我們追蹤bug有一定的影響 當我們覺得程式可能在哪個 塊上會出現異常的時候可以用try來對異常...

Perl 學習筆記 14

system是呼叫shell的最簡單的方法。例如 system ls l home system date exec是 呼叫後不用管 的system。使用 env獲得環境變數。例如 env home rootbeer bin env path delete env my make result sy...

Python學習筆記 14

本節主要有 tips 如果不想改變原資料,傳遞引數時盡量用其副本 函式也是乙個物件 物件是記憶體中專門用來儲存資料的一塊區域 一切皆物件 函式的引數 defrt a print zzzz a rt 3 def sum a,b,c print a b c sum 4,5,8 定義形參時可以指定默值,沒...