当前位置: 首页 > news >正文

C++ 79 之 自己写异常类

#include <iostream>
#include <string>
using namespace std;class MyOutOfRange : public exception{ // 选中exception右键 转到定义 复制一份 virtual const char* what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW  进行函数重写
public: string m_msg;MyOutOfRange(const char* str){// const char* 隐士转换为stringthis->m_msg = str;}MyOutOfRange(string str){// const char* 隐士转换为stringthis->m_msg = str;}// virtual char const* what() const{//     // string无法隐式转换为const char* 需要手动转换//     return m_msg.c_str();// }// virtual 虚函数复写 才能实现多态, 才能运行自己复写后的程序  重载what()virtual const char* what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW{//  string无法隐式转换为const char* 需要手动转换return m_msg.c_str();}};class Students05{
public:int m_age;Students05(int age){if(age <0 || age > 50){// throw MyOutOfRange("年龄0到150");  // const char*   字面量,是常量无法更改的字符串类型throw MyOutOfRange(string("年龄0到150"));  // 转成 string 类型后 走 MyOutOfRange(string str)}else{this->m_age = age;}}
};
int main()
{try{Students05 stu(1000);}catch(exception& e){cout << e.what() << endl;}return 0;
}

编写自己的异常类

① 标准库中的异常是有限的;

② 在自己的异常类中,可以添加自己的信息。(标准库中的异常类值允许设置一个用来描述异常的字符串)。

2. 如何编写自己的异常类?

① 建议自己的异常类要继承标准异常类。因为C++中可以抛出任何类型的异常,所以我们的异常类可以不继承自标准异常,但是这样可能会导致程序混乱,尤其是当我们多人协同开发时。

② 当继承标准异常类时,应该重载父类的what函数。

http://www.lryc.cn/news/379874.html

相关文章:

  • 如何搭建一个成功的短剧制作平台
  • kotlin类
  • android | studio的UI布局和代码调试 | UI调试 (用于找到项目源码)
  • LangChain实战技巧之六:一起玩转config(上篇)——ConfigurableField
  • 扫码称重上位机
  • 操作系统入门 -- 进程的通信方式
  • Python读取wps中的DISPIMG图片格式
  • elasticsearch的入门与实践
  • 神经网络学习6-线性层
  • PHP框架详解 - CodeIgniter 框架
  • 奔驰EQS SUV升级原厂主动式氛围灯效果展示
  • echarts Y轴展示时间片段,series data数据 也是时间片段,鼠标放上去 提示框显示对应的时间片段
  • 20. mediasoup服务器的布署与使用
  • 【leetcode--同构字符串】
  • shell expr功能详解
  • java继承Thead类和实现Runnable接口创建线程的区别
  • interface Ref<T = any> 这是什么写法?为什么写接口还需要加上<T = any>
  • 深入探索 MongoDB GridFS:高效大文件存储与管理的全面指南
  • 基于CentOS Stream 9平台 安装/卸载 Redis7.0.15
  • 激励-保健理论和公平理论
  • 深入探索 Spring Boot 自定义启动画面
  • Redis实战—Redis分布式锁
  • 联想Y7000P 2023款拆机教程及升级内存教程
  • 开发常用依赖
  • 【区分vue2和vue3下的element UI Empty 空状态组件,分别详细介绍属性,事件,方法如何使用,并举例】
  • 【AI作曲】毁掉音乐?早该来了!一个网易音乐人对于 AI 大模型音乐创作的思辨
  • RabbitMQ实践——最大长度队列
  • 【pytorch02】手写数字问题引入
  • 【查看显卡信息】——Ubuntu和windows
  • 在 RK3568 上构建 Android 11 模块:深入解析 m、mm、mmm 编译命令