C++程序创建自定义异常

c++程序创建自定义异常

异常是C++的一个非常核心的概念。在执行过程中发生不希望或不可能的操作时会发生异常。在C++中处理这些不希望或不可能的操作被称为异常处理。异常处理主要使用三个特定的关键字,它们是‘try’、‘catch’和‘throw’。‘try’关键字用于执行可能遇到异常的代码,‘catch’关键字用于处理这些异常,‘throws’关键字用于创建异常。C++中的异常可以分为两种类型,即STL异常和用户定义的异常。在本文中,我们重点介绍如何创建这些自定义的异常。有关异常处理的更多详细信息可以在此处找到。

使用单个类创建自定义异常

首先,我们看到如何使用一个单一的类来创建自定义异常。为此,我们必须定义一个类并抛出该类的异常。

语法

//user-defined classclass Test{};try{   //throw object of that class   throw Test();}catch(Test t) {   ....}

Example

的翻译为:

示例

#include using namespace std;//define a classclass Test{};int main() {   try{      //throw object of that class      throw Test();   }   catch(Test t) {      cout << "Caught exception 'Test'!" << endl;   }   return 0;}

输出

Caught exception 'Test'!

‘try’块会抛出该类的异常,而‘catch’块只会捕获该特定类的异常。如果有两个用户定义的异常类,那么必须分别处理它们。

使用多个类创建自定义异常

这个过程很简单,如预期的那样,如果有多个异常情况,每个都必须单独处理。

立即学习“C++免费学习笔记(深入)”;

语法

//user-defined classclass Test1{};class Test2{};try{   //throw object of the first class   throw Test1();}catch(Test1 t){   ....}try{   //throw object of the second class   throw Test2();}catch(Test2 t){   ....}

Example

的翻译为:

示例

#include using namespace std;//define multiple classesclass Test1{};class Test2{};int main() {   try{      //throw objects of multiple classes      throw Test1();   }   catch(Test1 t) {      cout << "Caught exception 'Test1'!" << endl;   }   try{      throw Test2();   }   catch(Test2 t) {      cout << "Caught exception 'Test2'!" << endl;   }   return 0;}

输出

Caught exception 'Test1'!Caught exception 'Test2'!

我们不得不使用两个不同的try-catch块来处理两种不同类别的异常。现在我们看看是否可以使用构造函数创建和处理异常。

使用构造函数创建自定义异常

我们可以使用类构造函数来创建自定义异常。在下面的示例中,我们可以看到异常的抛出和处理都在类构造函数内部进行管理。

Example

的翻译为:

示例

#include using namespace std;//define a classclass Test1{   string str;   public:      //try-catch in the constructor      Test1(string str){         try{            if (str == "Hello"){               throw "Exception! String cannot be 'Hello'!";            }            this->str = str;            }         catch(const char* s) {            cout << s << endl;         }      }};int main() {   Test1 t("Hello");   return 0;}

输出

Exception! String cannot be 'Hello'!

异常处理是C++提供的最重要的功能之一。我们可以继承C++异常类并使用它来实现异常处理,但这只是良好的实践,不是创建自定义异常所必需的。继承C++异常类的好处是,如果有一个普通的catch语句捕获std::exception,它可以处理任何用户定义的异常而不需要知道具体细节。需要注意的是,’throws’语句只在’try’块内起作用,否则不起作用。’catch’语句只能处理由用户定义的类或某些STL类抛出的异常。

以上就是C++程序创建自定义异常的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443569.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 20:18:23
下一篇 2025年12月17日 20:18:45

相关推荐

发表回复

登录后才能评论
关注微信