#include <iostream> using namespace std; //异常基类 class BaseMyException { public: virtual void what() = 0; virtual ~BaseMyException(){} }; class TargetSpaceNullException :public BaseMyException { public: virtual void what() { cout << "目标没有空间!" << endl; } ~TargetSpaceNullException() {} }; class SourceSpaceNullException :public BaseMyException { public: virtual void what() { cout << "源文件没有空间!" << endl; } ~SourceSpaceNullException() {} }; void copy_str(char* target, char* source) { if (target == NULL) { throw TargetSpaceNullException(); } if (source == NULL) { throw SourceSpaceNullException(); } while (*source != '\0') { *target = *source; target++; source++; } } void main() { char* source = "SeraphGabriel"; char buf[1024] = { 0 }; try { copy_str(buf, source); } catch (BaseMyException& ex) { ex.what(); } cout << buf << endl; return; }