异常的类数
How much classes for exceptions
本文关键字:异常 更新时间:2023-10-16
创建&用c++处理异常?
class CannotRead : public runtime_exception { ... }
class CannotParse : public runtime_exception { ... }
...
throw CannotRead();
...
或
...
throw runtime_error("cannot read");
...
用C++做这件事的惯用方法是什么?
链接到比较这两种方法的文章将不胜感激。
感谢
没有现成的建议,但我个人的经验法则是:
- 抛出
std::runtime_error
(或其兄弟之一,视情况而定) - 直到您发现需要在
catch
-时间区分各种异常,然后开始深化继承继承
通常,正如其他人在评论中提到的那样,您从std::runtime_error
派生并重载what()
虚拟方法。作为读者的练习,还可以编写一个构造函数来捕获异常消息。该网站提供了以下代码(尽管我对其进行了轻微修改以反映std::runtime_error
的更改)。
#include <iostream>
#include <exception>
class MyException : public std::runtime_error
{
const char * what () const throw () {
return "C++ Exception";
}
};
int main()
{
try {
throw MyException();
} catch(MyException& e) {
std::cout << "MyException caught" << std::endl;
std::cout << e.what() << std::endl;
} catch(std::exception& e) {
}
return 0;
}
相关文章:
- 处理多个异常集合的C++方法
- 我在c++代码中生成了一个运行时#3异常
- 孤立代码块在结构中引发异常
- C++中的赋值发生,尽管右侧出现异常
- 从构造函数抛出异常时如何克服内存泄漏
- 异常属于C++中的线程还是进程
- 当类定义不可见时捕获异常
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 为什么异常不退出程序?
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 如何修复链表类实现的未处理异常0xDDDDDDDD
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- 是什么导致了Unity 3D中的"错误线程异常"?
- 如何将strftime中的格式错误作为异常捕获
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 尝试使用智能指针时引发异常
- 函数如何通知用户它基于函数原型抛出异常?
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 当我使用 C++ 中的 C# dll 来使用 Selenium 时,存在异常处理问题
- Pytorch torch.cholesky忽略异常