C++异常处理报错【terminate called after throwing an instance of ‘char const‘】

该博客讨论了C++程序中使用异常处理来解决工资和工时计算时可能出现的问题。当输入为负数、工时为0或者时薪低于法定最低标准时,程序会抛出异常。出现程序暂停并显示错误信息的情况是因为catch块中的异常类型匹配不当。通过在catch中将`char*s`改为`const char*s`,确保异常匹配正确,从而避免程序终止,正确输出错误信息。
  • 情景引入 

    现在需要从键盘上输入x(工资)和h(工时)求时薪,要求用异常处理来解决:

  1. x和y是负数的时候,输出“输入负数不合法”
  2. x不为0,y是0的时候,输出“工时为0不合法”
  3. 时薪小于10元的时候,输出“违反劳动法”
#include<iostream>
#include<string>
using namespace std;
void check(int x, int h)
{
    try
    {
        if ( x < 0 || h < 0 ) throw"输入负数,不合法!";
        if ( h == 0 ) throw"工时为0,不合法!";
        else throw 1;
    }
    catch(char *s)
    {    cout << s << endl;  }
    catch(int s)
    {    
        try
        {
            if ( x/h < 10 ) throw"违反劳动法";
            else throw 1;
        }
        catch(int s) { cout << "时薪是:" << x/h << endl; }
        catch(char *s) { cout << s << endl; }
    }
}
int main()
{
    int x, h;
    cout << "从键盘上输入x(工资)和h(工时): ";
    cin >> x >> h;
    check(x, h);
    return 0;
}

 在这个程序中异常并没有被捕获到,而是程序会在中间停很长一段时间,并显示出:

 出现这种情况的原因就是在catch中异常并没有匹配上去,C++将自动调用terminate()终止程序。那这个情况该怎么解决呢?

  • 问题解决

只需要在catch中的char *s 的前面加上const就可以解决这里是将char *s变成了一个字符串常量指针。

void check(int x, int h)
{
    try
    {
        if ( x < 0 || h < 0 ) throw"输入负数,不合法!";
        if ( h == 0 ) throw"工时为0,不合法!";
        else throw 1;
    }
    catch(const char *s)
    {    cout << s << endl;  }
    catch(int s)
    {    
        try
        {
            if ( x/h < 10 ) throw"违反劳动法";
            else throw 1;
        }
        catch(int s) { cout << "时薪是:" << x/h << endl; }
        catch(const char *s) { cout << s << endl; }
    }
}

 如此就完美解决问题啦!

视频无损放大修复工具 TopazVideoAI 是一款由 Topaz Labs 开发的人工智能视频处理软件,它通过深度学习技术提供多种高效、智能的视频处理工具,帮助用户快速、轻松地完成视频处理任务 。以下是 TopazVideoAI 的一些核心描述词和功能: AI视频升级:TopazVideoAI 的核心功能之一是AI视频升级,它能够将视频分辨率提高多达16倍,最高可达8K 。这项功能特别适合将旧的标清素材升级为高清素材,例如从SD转换到HD、HD转换到4K,以及4K转换到8K 。 降噪与锐化:软件提供降噪和锐化功能,能够在保持高质量图像细节的同时降低噪音并修复压缩伪影 。特别是对于暗光条件下拍摄的高清视频,TopazVideoAI 能够优化图像质量 。 去隔行:TopazVideoAI 能够将隔行扫描的视频转换为逐行扫描格式,同时保持素材清晰锐利,消除旧视频中的锯齿状效果或线条 。 运动插值补帧:软件能够提高视频帧速率,使视频更流畅,一般视频补帧到60帧/秒 。这项功能通过生成新的中间帧来实现更流畅、节奏更慢的视频效果 。 抖动稳定:TopazVideoAI 还包含AI抖动稳定功能,减少相机抖动,使视频更加稳定 。 模型多样性:TopazVideoAI 提供多种AI模型,针对不同视频类型和需求,如Proteus、Iris、Nyx、Artemis、Gaia和Theia等,每个模型都有其特定的优化目标 。 用户友好:软件界面直观,用户可以轻松上手,进行视频编辑和增强 。 免费试用:TopazVideoAI 提供免费试用本,用户可以在购买前体验软件的增强效果 。 高兼容性:软件支持Win和Mac系统,提供了汉化安装本和免安装绿色本,以及Mac英文本 。 117GB模型库:TopazVideoAI 还整理了超级齐全的模型,可针对不同显卡进行下载,模型库大小多达117GB
### Topaz Video AI 使用指南 #### 功能介绍 Topaz Video AI 是一款强大的视频处理工具,专为提高视频质量而设计。该软件利用深度学习技术,在不损失画质的情况下实现视频的放大和修复[^1]。 - **无损放大**:通过先进的AI算法,可以在保持原始清晰度的同时将低分辨率视频放大至更高分辨率。 - **去噪与锐化**:内置智能降噪器可有效去除画面中的噪声并增强边缘细节,使图像更加干净利落[^2]。 - **色彩校正**:提供多种预设选项以及手动调整参数的功能,帮助用户优化颜色表现力。 - **帧率提升**:支持增加每秒显示的画面数量(FPS),从而让动作看起来更流畅自然[^3]。 #### 安装配置建议 为了获得最佳性能体验,推荐使用配备独立GPU的工作站运行此应用程序。对于硬件需求而言,官方文档指出至少需要具备类似于NVIDIA GTX 1080级别的显卡才能保证良好的交互效率;如果采用集成显卡,则可能会面临速度上的显著下降[^4]。 #### 初学者快速上手教程 启动程序后,默认界面友好直观: 1. 导入待编辑文件——点击界面上方菜单栏中的“导入”,选择本地存储设备内的目标素材; 2. 预览窗口操作——左侧区域用于实时查看当前进度条所指向位置的具体内容;右侧则展示了已应用效果后的本对比图样; 3. 应用特效滤镜——中间部分罗列了一系列可供挑选的效果类别按钮,只需轻按即可激活对应模式下的各项设置项; 4. 输出成品保存——完成所有修改步骤之后,可通过底部导航栏里的导出命令指定最终产物的形式(如MP4格式),同时还能自定义输出路径以便于后续查找管理。 ```python # Python代码示例并非实际存在于Topaz Video AI中, 此处仅为说明如何编写Python脚本调用API(假设存在此类接口) import topaz_video_ai as tva def enhance_video(input_path, output_path): video_editor = tva.VideoEditor() # 加载输入视频 video_editor.load_video(input_path) # 执行增强处理 enhanced_clip = video_editor.enhance(resolution="auto", noise_reduction=True, color_correction="preset_1") # 保存结果 enhanced_clip.save(output_path) enhance_video('input.mp4', 'output_enhanced.mp4') ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值