break和continue
break語句負責終止離他最近的while,do while,for,switch,並從這些語句之後的第一條語句開始執行。
continue語句終止最近的循環中當前迭代並立即開始下一次迭代,雖然中斷了當前迭代但是循環仍在進行。
try語句塊和異常處理
異常是存在於運行時的反常行爲,這些行爲超出了函數正常功能的範圍。典型的異常包括失去數據庫連接以及遇到意外輸入等。
在C++中異常處理包括:
throw表達式: 異常檢測部分使用throw表達式來表示它遇到了無法處理的問題,引發異常。
try語句塊: 異常處理部分使用try語句塊處理異常,try語句塊以一個或者多個catch子句結束。try語句塊中代碼拋出的異常通常會被某個catch語句處理。
異常類: 用於在throw表達式和相關的catch子句之間傳遞異常的具體信息。
這個感覺不太熟悉,後面還有這一章的知識點再補充
#include<iostream>
#include<stdexcept>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
try
{
if(b==0) throw std::runtime_error("被除數不能爲0");
cout<<static_cast<double>(a)/b<<endl;
}
catch(runtime_error err)
{
cout<<err.what()<<"\nTry Again Enter y or n"<<endl;
char c;
cin>>c;
if(!cin||c=='n')
return 0;
}
return 0;
}
當異常被拋出時,首先搜索拋出該異常的函數,如果沒找到匹配的catch子句,終止該函數,並在調用該函數的函數中繼續尋找,以此類推,沿着程序的執行路徑逐層回退,直到找到適合的catch語句,沒找到則轉到名爲terminnate的標準庫函數,程序非正常退出。
c++標準庫定義了一組,用於報告標準庫函數遇到的問題。這些異常類也可以在用戶編寫的程序中使用,它們分別定義在4個頭文件:
- exception頭文件,定義了最通用的異常類,只報告異常的發生不提供額外的信息
- stdexcept頭文件定義了幾種最常用的類,如runtime_error
- new頭文件定義了bad_alloc異常類型
- type_info頭文件定義了bad_cast異常類型