尝试 C 中的 catch 语句

2023-11-21

今天我在想其他语言中存在的 try/catch 块。谷歌搜索了一段时间,但没有结果。据我所知,C 中没有 try/catch 这样的东西。但是,有没有办法“模拟”它们呢?
当然,有断言和其他技巧,但没有像 try/catch 那样也能捕获引发的异常。谢谢


C 本身不支持异常,但您可以在一定程度上模拟它们setjmp and longjmp calls.

static jmp_buf s_jumpBuffer;

void Example() { 
  if (setjmp(s_jumpBuffer)) {
    // The longjmp was executed and returned control here
    printf("Exception happened here\n");
  } else {
    // Normal code execution starts here
    Test();
  }
}

void Test() {
  // Rough equivalent of `throw`
  longjmp(s_jumpBuffer, 42);
}

这个网站有一个关于如何模拟异常的很好的教程setjmp and longjmp

  • http://www.di.unipi.it/~nids/docs/longjump_try_trow_catch.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试 C 中的 catch 语句 的相关文章

  • 无法使用 strptime() 获取秒数

    我收到 YYYY MM DDThh mm ss S Z hh mm 这种格式的日期时间 我正在尝试使用复制该值strptime如下所示 struct tm time 0 char pEnd strptime datetime Y m dT
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • Fabric js 使用自定义属性扩展 toObject,丢失了默认属性

    在发布这篇文章之前 我一直在这里和其他许多地方一样进行查找 但我可以让它充分发挥作用 我所需要的只是能够在所有形状中保存一些自定义属性 属性是 uuid 和 rt attributes 因此 按照手动方式 我添加了以下代码 fabric O
  • 如何在cygwin上通过控制台安装以前版本的软件包?

    我需要编写一个使用 svn 1 6 17 部署许多 cygwin 应用程序的脚本 我所有的尝试都是通过安装 svn 1 7 或什么都不完成 我尝试安装 subversion subversion 1 6 subversion 1 6 17
  • 连接 xml 文件

    我有几个 xml 文件 其名称存储在另一个 xml 文件中 我想使用 xsl 生成 xml 文件组合的摘要 我记得有一种方法可以使用 msxml 扩展来执行此操作 我正在使用 msxml 我知道我可以使用获取每个文件的内容select do
  • 如何使用 JavaScript 检测 Chrome v78+ 上的 #enable-force-dark 标志?

    我最近为我的网站设计并实现了一种深色模式 该模式使用自定义深色来匹配浅色 默认 配色方案 而且我最近还意识到 Chrome 78 有一个可选标志 称为 enable force dark 启用后 用户必须这样做 Chrome 会自动尝试将网
  • 验证用 javascript 逗号分隔的多个电子邮件

    我想验证一个字符串 它可以是一封电子邮件或多封以逗号分隔的电子邮件 例如 电子邮件受保护 gt 正确账单 gt 假 电子邮件受保护 电子邮件受保护 gt 正确 电子邮件受保护 电子邮件受保护 鲍勃 gt 假 bob 电子邮件受保护 电子邮件
  • 如何在静态上下文中将泛型类与特定对象一起使用?

    我会尽力解释 我使用 Play Framework 2 我会做很多 CRUD 操作 其中一些是相同的 所以我想 KISS 和 DRY 所以一开始我正在考虑一个包含以下内容的抽象类list details create update and
  • 动态将 Expression> 转换为 Expression

    我找不到从 Expression gt 转换为 Expression gt 的方法 由于我使用了大量反射 实际上 我真正需要的是一种采用类型参数并执行转换的方法 public object Convert Expression
  • 检查pandas数据框中是否有多个子字符串[重复]

    这个问题在这里已经有答案了 我有一个 pandas 数据框 我想检查特定列的子字符串 目前我有 30 行这样的代码 df NAME str upper str contains LIMITED df NAME str upper str c
  • python打开不同目录下的所有文件

    我需要在当前目录中打开另一个目录中的文件而不使用它的路径 当我执行以下代码时 for file in os listdir sub dir f open file r lines f readlines for line in lines
  • C++ const Convert [重复]

    这个问题在这里已经有答案了 可能的重复 为什么将 指向非常量指针的指针 转换为 指向指向常量指针的指针 是不合法的 我有一个功能 bool isCirclePolygonIntersection const Point const int
  • 无需编写控制器的简单 ASP.NET MVC 视图

    我们正在构建一个具有非常少代码的网站 它主要只是提供一堆静态页面 我知道随着时间的推移 情况会发生变化 我们需要交换更多动态信息 因此我决定继续使用 ASP NET MVC2 和 Spark 视图引擎构建一个 Web 应用程序 将有几个控制
  • C#:明确声明“不安全”/编译器选项的好处

    我了解指针以及在 C 代码中使用它们的罕见需求 我的问题是 必须在代码块中明确声明 不安全 背后的原因是什么 此外 为什么必须更改编译器选项以允许 不安全 代码 底线 CLR 或语言规范 中的什么使得我们不能在需要时就使用指针 就像 C 和
  • “您可能需要一个合适的加载器来处理此文件类型”webpack 和 vue

    我正在尝试使用以下命令编译 webpack node modules bin webpack 我收到错误 Module parse failed home vagrant Code stream resources assets js vi
  • jQuery 动画:忽略双击

    我有一个简单的 jQuery 动画 可以在 click 事件发生时将 div 向右或向左移动 但是 如果用户单击该事件两次 则会触发两次 这会扰乱格式 这是我所拥有的示例 a right click function if this is
  • 限制wget可以下载的大小

    是否可以限制或限制数据量wget从网站下载 通过服务器设置或wget环境 例如 一页大小为 1GB 我希望 wget 在 100MB 时停止下载 利用系统通过以下方式限制进程资源消耗的能力ulimit命令应该可以正常工作 假设您使用 bas
  • 在 Mako 中将字符串标记为安全

    我正在使用带有 Mako 模板的 Pylons 并且我想避免一直输入以下内容 h some function that outputs html n 我想以某种方式将函数或变量标记为安全 您可以在 Django 中执行此操作 这样我就不必一
  • 错误:未知选项“--no-crunch”- AAPT 错误

    我昨天下载了最新版本 r14 但在运行任何应用程序时出现此错误 ERROR Unknown option no crunch 请帮忙 我最近遇到了这个问题 但现在是solved 更新到 ADT r14 后 转到Window gt SDK M
  • YouTube 链接的正则表达式

    在我正在开发的系统中 我需要识别以下格式的 YouTube 链接 youtube youtube 网址 youtube 目前我得到了这个正则表达式 youtube http www youtube watch v a zA Z0 9 you
  • 尝试使用模拟在远程计算机上运行 PowerShell 脚本时出现“不允许请求的注册表访问”

    这是我第一次尝试从 C 应用程序执行 PowerShell 脚本 我使用 PowerShell 是因为我需要在远程计算机上执行的 exe 的输出 我能够使用 WMI 在远程计算机上运行 exe 但无法获得所需的输出 无论如何 过去一天左右我
  • 尝试 C 中的 catch 语句

    今天我在想其他语言中存在的 try catch 块 谷歌搜索了一段时间 但没有结果 据我所知 C 中没有 try catch 这样的东西 但是 有没有办法 模拟 它们呢 当然 有断言和其他技巧 但没有像 try catch 那样也能捕获引发