std::invalid_argument应用
来源:互联网 发布:电视盒子root软件 编辑:程序博客网 时间:2024/06/08 17:41
参考http://www.cnblogs.com/couhujia/archive/2012/10/23/2735682.html
std::invalid_argument ,一个异常类的子类,用于异常检查
值得注意的是其中出现了
1.
~InvalidPeople() throw() {}
的用法
参考http://www.cnblogs.com/mumuliang/archive/2012/03/22/2411521.html
这种写法规定了抛出的类型
throw()就是什么都不可以抛出,throw(std::string, int) 那么只能抛出 std::string 和 int . 同理......
2.
#define TTOSTRING(x) #x
#define TOSTRING(x) TTOSTRING(x)
ErrorInfo ei(__FILE__,TOSTRING(__LINE__),__PRETTY_FUNCTION__);
__FILE__ 包含当前程序文件名的字符串__LINE__ 表示当前行号的整数__DATE__ 包含当前日期的字符串__STDC__ 如果编译器遵循ANSI C标准,它就是个非零值__TIME__ 包含当前时间的字符串他那个例子用gcc编译的,如果用ms系列编译器应该把__PRETTY_FUNCTION__换成__FUNCTION__.由于__LINE__ 为int类型而我们要换成std::string 于是用到 #define TOSTRING(x) #x 定义宏里用到# 就会转换成字符串 #x --> "x"通常情况下#define TOSTRING(x) #x 就可以了 , 但如果出现嵌套宏如__LINE____LINE__ 本身就是宏() 那么(这应该和编译原理有关,我还没学这么课。。先放着)就会展开宏定义里的宏在#define TOSTRING(x) #x下, 就会 "__LINE__"我们再加一层#define TTOSTRING(x) #x#define TOSTRING(x) TTOSTRING(x)
猜想:__LINE__宏的替换一定要在 #x前面,所以我们多加了一层。。。。
0 0
- std::invalid_argument应用
- std::invalid_argument应用
- invalid_argument 非法参数的异常
- new(std::nothrow) 应用场景
- new(std::nothrow) 应用场景
- std::shared_ptr的巧妙应用
- C++11新特性应用--占位符(std::placeholders std::is_placeholder std::is_bind_expression)
- C++11新特性应用--占位符(std::placeholders std::is_placeholder std::is_bind_expression)
- C++11新特性应用--占位符(std::placeholders std::is_placeholder std::is_bind_expression)
- (2012.03.24)Std::StringStream的小心应用
- std::map的一次错误应用(日积月累)
- std
- std
- std
- C++11新特性应用--实现延时求值(std::function和std::bind)
- 【C++ STL应用与实现】13: 如何使用std::queue和std::priority_queue
- C++11 std::unique_lock与std::lock_guard区别及多线程应用实例
- std::auto_ptr boost::shared_ptr智能指针的应用
- erlang热更新的实现与原理
- 结构的声明
- 重构-改善既有代码的设计:简化条件表达式(七)
- 10个漂亮问题完美结束面试
- POJ 1159-Palindrome(DP/LCS变形)
- std::invalid_argument应用
- System.in 处理
- quick-x-player 使用说明
- 安卓PopupWindow的详细用法、位置、动画效果等
- 重构-改善既有代码的设计:简化函数调用 (八)
- Java多线程:慎重使用volatile关键字
- sublime配置全攻略
- Android App工程结构搭建
- 如何使用 DataInputStream and DataOutputStream?