構建異常類的原因:因為當代的c++庫基本上都會使用c++中的異常特性,依賴於異常建立出來的庫穩定性非常好。
思路:c++中異常的型別可以是自定義類型別。
異常類的標頭檔案:
#ifndef _exception_h_
#define _exception_h_
#include "object.h"
namespace dtlib
; // 計算異常
class arithmeticexception :public exception
arithmeticexception(const
char* message) : exception(message)
arithmeticexception(const
char* file, int line) : exception(file, line)
arithmeticexception(const
char* message, const
char* file, int line) : exception(message, file, line)
arithmeticexception(const arithmeticexception&e) :exception(e)
arithmeticexception& operator=(const arithmeticexception&e)
};// 空指標異常
class nullpointerexception :public exception
nullpointerexception(const
char* message) : exception(message)
nullpointerexception(const
char* file, int line) : exception(file, line)
nullpointerexception(const
char* message, const
char* file, int line) : exception(message, file, line)
nullpointerexception(const nullpointerexception&e) :exception(e)
nullpointerexception& operator=(const nullpointerexception&e)
};// 越界異常
class indexoutofbound***ception :public exception
indexoutofbound***ception(const
char* message) : exception(message)
indexoutofbound***ception(const
char* file, int line) : exception(file, line)
indexoutofbound***ception(const
char* message, const
char* file, int line) : exception(message, file, line)
indexoutofbound***ception(const indexoutofbound***ception&e) :exception(e)
indexoutofbound***ception& operator=(const indexoutofbound***ception&e)
};// 記憶體不足異常
class noenoughmemoryexception :public exception
noenoughmemoryexception(const
char* message) : exception(message)
noenoughmemoryexception(const
char* file, int line) : exception(file, line)
noenoughmemoryexception(const
char* message, const
char* file, int line) : exception(message, file, line)
noenoughmemoryexception(const noenoughmemoryexception&e) :exception(e)
noenoughmemoryexception& operator=(const noenoughmemoryexception&e)
};// 引數錯誤異常
class invalidparameterexception :public exception
invalidparameterexception(const
char* message) : exception(message)
invalidparameterexception(const
char* file, int line) : exception(file, line)
invalidparameterexception(const
char* message, const
char* file, int line) : exception(message, file, line)
invalidparameterexception(const invalidparameterexception&e) :exception(e)
invalidparameterexception& operator=(const invalidparameterexception&e)
};// 非法操作異常
class invalidoperationexception :public exception
invalidoperationexception(const
char* message) : exception(message)
invalidoperationexception(const
char* file, int line) : exception(file, line)
invalidoperationexception(const
char* message, const
char* file, int line) : exception(message, file, line)
invalidoperationexception(const invalidparameterexception&e) :exception(e)
invalidoperationexception& operator=(const invalidparameterexception&e)
};}#endif
異常類原始檔:
#include "exception.h"
#include
#include
using
namespace
std;
#pragma warning(disable:4996)
namespace dtlib
; itoa(line, sl, 10);
m_location = static_cast
(malloc(strlen(file) + strlen(sl) + 2)); // 2是 : \0
if (m_location != null)
}else
}exception::exception(const
char* message)
exception::exception(const
char* file, int line)
exception::exception(const
char* message, const
char* file, int line)
exception::exception(const exception& e)
exception& exception::operator=(const exception& e)
return *this;
}const
char* exception::message() const
const
char* exception::location() const
exception::~exception()
}
資料結構 (1 1) 異常類構建
異常類構建 以下為實現自己的異常庫mylib部分 file exception.h namespace mylib 計算異常 class arithmeticexception public exception arithmeticexception const char message excep...
c 中構建異常處理
異常是程式執行中發生的錯誤,異常處理是程式設計的一部分。在c 中異常處理是通過exception基類進行的,可以建立自己的異常類,但這個類必須是繼承自exception基類。異常將導致不完善或者不需要的結果,因此在程式設計中需要處理異常。異常也可以是象 indexoutofbounds 這樣的錯誤,...
定義「異常類」處理異常
include using namespace std 定義除數為0異常類 class zeroexception char show 定義總分或科目數為負數異常類 class negativeexception char show float div float score,int n if n ...