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 一旦異常被處理 程式的執行就不能夠在異常被丟擲的地方繼續
相關文章
- PHP錯誤處理和異常處理PHP
- Python錯誤處理和異常處理(二)Python
- 異常錯誤資訊處理
- Oracle異常錯誤處理Oracle
- ORACLE 異常錯誤處理Oracle
- .NET----錯誤和異常處理機制
- php錯誤與異常處理方法PHP
- goang 錯誤&異常處理機制Go
- Laravel Exceptions——異常與錯誤處理LaravelException
- Python之錯誤異常和檔案處理Python
- 【C++】 C++異常捕捉和處理C++
- PHP 核心知識點(一)異常和錯誤處理PHP
- 總結:整理 oracle異常錯誤處理 .Oracle
- PHP系列(七)PHP錯誤異常處理PHP
- pl/sql中錯誤的異常處理SQL
- C++ 異常處理C++
- C++異常處理C++
- 在vue使用異常處理做錯誤提示Vue
- 前端錯誤收集以及統一異常處理前端
- PHP異常、錯誤處理機制筆記PHP筆記
- C++和結構化異常處理C++
- c++異常處理格式C++
- c++ 異常處理(2)C++
- c++ 異常處理(1)C++
- c++異常處理 (轉)C++
- 在大型軟體專案中如何處理錯誤和異常
- PHP錯誤和異常PHP
- C++異常處理機制C++
- windows核心程式設計---未處理異常,向量化異常處理與C++異常Windows程式設計C++
- thinkphp原始碼分析(四)—錯誤及異常處理篇PHP原始碼
- Java基礎知識:通過異常處理錯誤Java
- 深入探討Java中的異常與錯誤處理Java
- C++ 異常處理機制詳解:輕鬆掌握異常處理技巧C++
- C++整理19_異常處理C++
- Flutter之異常和錯誤Flutter
- 約束和異常處理
- 迭代器和異常處理
- 異常篇——異常處理