You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
913 B
C++
42 lines
913 B
C++
/**
|
|
* @file WException.h
|
|
* @brief 异常基类
|
|
* @author 沙漠乌鸦
|
|
* @time 2010-07-23
|
|
*/
|
|
#pragma once
|
|
|
|
#include <stdexcept>
|
|
#include <string>
|
|
#include <iostream>
|
|
|
|
#pragma warning(disable : 4290) // disable Exception Specification warning
|
|
|
|
namespace wuya
|
|
{
|
|
|
|
// 定义获取当前文件名、当前行的宏
|
|
#define LOCATION WLocation(__FILE__, __LINE__)
|
|
|
|
inline
|
|
std::string WLocation(std::string strFile,int iLineNo)
|
|
{
|
|
const int bufSize = 64;
|
|
char buf[bufSize];
|
|
sprintf_s(buf,bufSize,"Line no. %d", iLineNo);
|
|
|
|
return strFile + buf;
|
|
}
|
|
|
|
/** @brief 基础异常函数 */
|
|
class WException : public std::runtime_error
|
|
{
|
|
public:
|
|
WException() throw() : runtime_error("error") {}
|
|
WException(std::string msg) throw() : runtime_error(msg) {}
|
|
WException(std::string msg, std::string location) throw() : std::runtime_error(msg + location) {}
|
|
|
|
void WriteLog(std::ostream& os) throw() { os << what() << std::endl; }
|
|
};
|
|
|
|
} |