1. 異常處理機制
? ? ? ? ? C++中使用try,throw和catch三個關鍵字來實現異常的觸發、拋出和處理的功能,具體通用語法形式如下:
? ? ? ? ? ? ? ? ? ? try{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(true)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? normal program-statements;//沒有觸發異常時候執行的代碼
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(false)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? throw(exception);? ? ? ? //出現錯誤,拋出的異常
? ? ? ? ? ? ? ? ? ? ?}catch(exception-declaration)? ?//異常捕捉
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?handler-statements;? ? ? //異常處理
? ? ? ? ? ? ? ? ? ??}.....
? ? ? ? ?C++標準庫定義了一組類,用于處理標準庫中遇到的問題(支持創建/拷貝/賦值操作),具體如下:
? ? ? ? ? ? ? ? ? ?頭文件<exception> 異常類exception 只報告異常,不提供其他信息。默認初始化
? ? ? ? ? ? ? ? ? ?頭文件<new> 異常類 bad_alloc? ?默認初始化
? ? ? ? ? ? ? ? ? ?頭文件<type_Info> 異常類 bad_cast? ?默認初始化
? ? ? ? ? ? ? ? ? ?頭文件<stdexcept> 異常類,如下所示:string/C風格字符串初始化
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? 異常類型定義了一個what的成員函數,無參數,返回值為C風格字符串,和異常類型相關。異常類采用顯示初始化的,則返回顯示初始化的值,異常類是采用默認初始化的,內容由編譯器決定。
2.case,范圍for語句,continue知識點總結
? ? ? ? ? ?在switch-case語句中,如果每個case語句后面不加上break中止符,則case語句會跨越標簽繼續執行下去。例如:
? ? ? ? ? ? ? ? ? char ch;cin>>ch;
? ? ? ? ? ? ? ? ? switch(ch){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case 'a' : ++acnt;? ? ? ?//如果輸入的ch字符是‘a’,判斷第一個case語句滿足,執行完++acnt后
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case 'e' : ++ecnt;? ? ? //會跳過第二個case語句,執行++ecnt;
? ? ? ? ? ? ? ? ? }
? ? ? ? 在switch-case語句中,case標簽不能單獨出現,后面應該跟上一條語句或者另外一個case標簽。也就是說,case標簽后面可以不接語句,但是冒號必須保留。
? ? ? ? 范圍for語句中的expression(范圍for語句格式:for(declaration : expression) statement)必須是一個序列,其中序列的頭指針和尾后指針已經確定,因此在使用范圍for語句的時候,不允許往序列中增加或刪除元素(任何破壞頭指針和尾后指針的行為都不允許)
? ? ? ?continue不允許直接使用在switch-case中,具體原因是continue是跳出當前循環并進入下一次循環,而是switch-case只有一次循環操作。
?
? ? ? ? ? ? ? ? ? ?