奇怪 - mysql 的 sql::SQLException 没有被它的类型捕获,而是被捕获为 std::exception 并成功地返回

2023-12-06

我正在使用 mysql c++ 连接器和这个(有点简化的)代码。

try
{
    statement->setString(1, word);
    statement->executeUpdate();
}
catch( sql::SQLException& e )
{
    // I don't get here
    return sqlerrno_to_error_code( e.getErrorCode() );
}
catch( std::exception& e )
{
    // I do get here and the cast works
    sql::SQLException& sqle = (sql::SQLException&) e;
    return sqlerrno_to_error_code( sqle.getErrorCode() );
}

连接器应该抛出 sql::SQLException ,它派生自 std::exception 并具有一些附加方法,例如getErrorCode().

抛出的异常在第二个中被捕获catch块,但可以转换为(并用作)sql::SQLException成功地。

更奇怪的是,不同可执行文件中的类似代码会捕获sql::SQLException正如预期的那样。它们之间的区别在于第一个位于共享对象(.so)中,该对象加载了dlopen().

RHEL 5.7 32 位,gcc 4.1.2


请参阅注释dynamic_cast, throw, typeid不使用共享库在海湾合作委员会常见问题页面上。

因为你正在使用dlopen(),您需要将可执行文件链接到-E标志(或通过
-Wl,-E to g++ if g++正在调用链接器)并传递RTLD_GLOBAL标记为dlopen().

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

奇怪 - mysql 的 sql::SQLException 没有被它的类型捕获,而是被捕获为 std::exception 并成功地返回 的相关文章

  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 使用 GoolgeProvider 的 NextAuth 不会在会话回调中返回用户

    突然我无法再访问注册用户的电子邮件地址 我使用 NextAuth 和 Google 作为提供商 到目前为止 一切顺利 实际上 注册成功后 用户的电子邮件应该是由Google 发送的 在 MongoDB 数据库中 用户表照常创建 用户和电子邮
  • 登录后重定向 laravel 7 [重复]

    这个问题在这里已经有答案了 我想在登录后将用户重定向到 details 但它将我重定向到 home 登录控制器 php public function authenticate Request request credentials req
  • 对 JSON 键进行排序并与匹配值合并

    我的 JSON 看起来像这样 json type big date 2012 12 08 qty 6 type small date 2012 12 08 qty 9 type big date 2012 12 15 qty 4 type
  • O(N) 中直到 N 为止的数字的约数计数?

    因此 我们可以使用 sieve 在 O NlogN 算法中计算从 1 到 N 的每个数字的约数 int n cin gt gt n for int i 1 i lt n i for int j i j lt n j i cnt j here
  • CMake将不同子目录中的静态库链接到一个静态库

    我使用CMake构建了一个由多个嵌套静态库组成的项目 下图显示了类似但简单的结构 TestProject CMakeLists txt Main cpp level2 level2 cpp level2 h CMakeLists txt l
  • 需求.txt 与 setup.py

    我开始使用 Python 我已经添加requirements txt and setup py到我的项目 但是 我仍然对这两个文件的用途感到困惑 我读过setup py是为可重新分发的东西而设计的requirements txt是为不可再分
  • 用 C++ 以编程方式打开文档

    我有一个用 C 编写的控制台程序 现在 每当程序用户在控制台中输入 手册 时 我想打开一个手册文档 txt 或 pdf 格式 我怎样才能做到这一点 任何教程的链接都会有帮助 谢谢 尝试编译这段代码 Open cpp to Open exe然
  • 使用递归查找所有索引

    我必须编写一个程序来查找列表或字符串中特定元素的所有索引值 我have to使用递归 我的函数只能接受两个参数 我的问题是我的程序只找到第一个索引然后停止 我该如何更改它以满足我的要求 My code def find all L v re
  • 在 Android 中打开 pdf 时出现问题:文件路径无效

    我需要从我的 Android 应用程序打开一个 pdf 文件 我将 pdf 保存在应用程序包文件夹 data data com app example files 中 我已经在 android 模拟器中安装了 adobe reader 应用
  • Highcharts 中的径向饼图数据标签

    如何将数据标签置于饼图楔形 内部 的中心并与饼图半径对齐 而不是水平或垂直对齐 这是我所追求的图像 如果不是开箱即用的功能 也许有人有一个插件 或者甚至一些实验代码也会有用 Highcharts 不提供在饼图中自动旋转数据标签的选项 您可以
  • 构建 android 项目时出现 CXX1405 cmake 异常

    当我构建项目时出现错误 如下所示 我尝试了很多事情但从未成功 我使用的是 m1 MacBook 这与此错误有关吗 CXX1405 构建 Json 时出现异常启动进程 命令 Users serhat Library Android sdk c
  • 以编程方式创建扩展的 UItableViewCell

    我有一个 tableviewcell 我想在点击时展开和折叠 我找到的所有示例都是故事板基础 我正在尝试以编程方式执行此操作 我最初的想法是创建一个子视图并将其限制到内容视图 但是当我使用以下命令调整单元格的高度时heightForRowA
  • 如何从对于内存来说太大的文件构建(或预先计算)直方图

    python 是否有一个图形库不需要将所有原始数据点存储为numpy数组或列表以绘制直方图 我有一个数据集对于内存来说太大 并且我不想使用子采样来减少数据大小 我正在寻找的是一个可以获取生成器输出的库 从文件生成的每个数据点 作为float
  • 在 Mac 上的 XAMPP 上安装 PHP 7.0 国际化扩展 (Intl)

    我按照此处概述的说明进行操作 在 Mac 上的 XAMPP 上安装 PHP 国际化扩展 Intl 运行 sudo pecl install intl 从地窖中选择了正确的文件 然后发生了这个错误 private tmp pear temp
  • 是否有 CheckStyle 规则强制 if else 关键字位于 if/else 梯形图中的同一行?

    基于这个问题看来 CheckStyle 的默认模板将允许 if else 梯子将if and else有换行符 意思是我愿意this被标记为违规的代码 if true System out println 20 else if true S
  • 按字体计算 Microsoft Word 文档中的字数?

    我有一个包含代码示例的大型文档 我想知道字体 Calibri Body 中所有文本的字数 无论大小如何 我想忽略 Consolas 等 我有一个按斜体计数的宏 作为示例发布 但无法运行它 Sub IgnoreItalics Dim lngW
  • R Shiny 观察事件问题

    当在数据表中选择行并且有人按下 删除行 开关时 我试图从数据框中删除行 input click rows selected 给出所选行的 id 我使用observeEvent和observe似乎有问题 因为代码在我第一次轻按开关时删除了选定
  • Facebook 分享/评论无法正常工作

    在我的页面中 我添加了 Facebook 评论和分享按钮 一切都是按照他们的指示完成的 所以 我已经包含了加载脚本 div div
  • Facelets:使用 ui:param 将 bean 名称传递给操作属性

    由于某些自定义组件在其属性中需要 bean 名称 而不是 bean 实例 因此我需要在页面之间传递实际的 bean 名称 由于 bean 本身也被非自定义组件使用 我想避免使用额外的ui param 就像这里描述的那样在 中传递操作 因为它
  • 奇怪 - mysql 的 sql::SQLException 没有被它的类型捕获,而是被捕获为 std::exception 并成功地返回

    我正在使用 mysql c 连接器和这个 有点简化的 代码 try statement gt setString 1 word statement gt executeUpdate catch sql SQLException e I do