異常類構建

2021-08-16 22:19:15 字數 4298 閱讀 2168

構建異常類的原因:因為當代的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 ...