C++錯誤和異常處理
錯誤處理利用庫函式(strerror())
#include <iostream>
#include <errno.h>
#include <string.h>
using namespace std;
int main()
{
for(int i = 0; i < 140; ++i)
{
errno = i;
cout << "errno" << i << ":" << strerror(errno) << endl;
}
return 0;
}
執行結果:
C 庫函式 char *strerror(int errnum) 從內部陣列中搜尋錯誤號 errnum,並返回一個指向錯誤訊息字串的指標。strerror 生成的錯誤字串取決於開發平臺和編譯器。
宣告
char *strerror(int errnum)
引數
errnum -- 錯誤號,通常是 errno。
返回值
該函式返回一個指向錯誤字串的指標,該錯誤字串描述了錯誤 errnum。
執行錯誤判斷:
#include <iostream>
#include <errno.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
using namespace std;
int main()
{
int ret = close(10);
if(ret == -1)
{
fprintf(stderr,"close error with message :%s,errno = %d\n", strerror(errno), errno);
}
return 0;
}
執行結果
在系統程式設計中通常通過函式返回值來表示錯誤(一般-1代表函式執行出錯),並通過特殊變數errno來描述。
異常處理:
異常處理是一種允許兩個獨立開發的程式元件在程式執行期間遇到程式不正常的情況(異常(exception))時,相互通訊的機制。
丟擲異常:
異常是程式可能檢測到的,執行時刻不正常的情況。如被0除,陣列越界或空閒儲存記憶體耗盡。異常存在於程式正常函式之外,要求程式立刻處理。
C++程式中出現異常時,檢測到異常的資料段可以通過產生或者丟擲異常來通知異常發生在這裡。
在 C++中 異常往往用類 class 來實現;
丟擲異常通過throw表示式來實現,異常往往丟擲class型別的物件,throw表示式可以丟擲任何型別的物件
try塊:必須包圍能夠丟擲異常的語句。try 塊以關鍵字 try 開始 後面是花括號括起來的語句序列 在 try 塊之後是一組處理程式碼 被稱為 catch 子句。
當某條語句丟擲異常時 跟在該語句後面的語句將被跳過 程式執行權被轉交給處理異常的 catch 子句 如果沒有 catch 子句能夠處理該異常 則程式執行權又將被轉交給 C++標準庫中定義的函式 terminate()。
try 塊可以包含任何 C++語句——表示式以及宣告 一個 try 塊引入一個區域性域 在 try塊內宣告的變數不能在 try 塊外被引用 包括在 catch 子句中。
捕獲異常:
C++異常處理程式碼是 catch 子句 catch clause 當一個異常被 try 塊中的語句丟擲時系統通過檢視跟在 try 塊後面的 catch 子句列表 來查詢能夠處理該異常的 catch 子句。
一個 catch 子句由三部分構成 關鍵字 catch 在括號中的單個型別或單個物件宣告被稱作異常宣告 exception declaration 以及複合語句中的一組語句 如果選擇了一個 catch 子句來處理一個異常 則執行相應的複合語句。
C++的異常處理機制被稱為是不可恢復的 nonresumptive 一旦異常被處理 程式的執行就不能夠在異常被丟擲的地方繼續
相關文章
- Python錯誤處理和異常處理(二)Python
- Oracle異常錯誤處理Oracle
- ORACLE 異常錯誤處理Oracle
- 異常錯誤資訊處理
- Python之錯誤異常和檔案處理Python
- .NET----錯誤和異常處理機制
- 說說你對異常處理和錯誤處理的理解
- rust學習十、異常處理(錯誤處理)Rust
- php錯誤與異常處理方法PHP
- goang 錯誤&異常處理機制Go
- 【C++】 C++異常捕捉和處理C++
- PHP 核心知識點(一)異常和錯誤處理PHP
- 前端錯誤收集以及統一異常處理前端
- 在vue使用異常處理做錯誤提示Vue
- 在大型軟體專案中如何處理錯誤和異常
- PHP錯誤和異常PHP
- C++異常處理機制C++
- thinkphp原始碼分析(四)—錯誤及異常處理篇PHP原始碼
- C++ 異常處理機制詳解:輕鬆掌握異常處理技巧C++
- Flutter之異常和錯誤Flutter
- C++整理19_異常處理C++
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- 錯誤和異常 (一):錯誤基礎知識
- 約束和異常處理
- 迭代器和異常處理
- 異常篇——異常處理
- 異常處理
- 【C++】 63_C語言異常處理C++C語言
- Java 異常處理:使用和思考Java
- SpringBoot錯誤處理機制以及自定義異常響應原理解析Spring Boot
- JSP 異常處理如何處理?JS
- python錯誤與異常Python
- 異常-throws的方式處理異常
- 錯誤處理
- React 異常處理React
- JS異常處理JS
- oracle異常處理Oracle
- Python——異常處理Python