【发布时间】:2016-01-26 21:25:40
【问题描述】:
我已经看到了关于这个主题的类似问题,之前有人问过这些问题,但找不到上述问题的解决方案。我在 C# 中为 SAP B1 编写了一个附加组件。用户必须在 UDT 中输入一些数据库列名。然后我的函数运行查询并获取数据。但是如果用户在表中输入了错误的列名,我应该有一个适当的错误处理来捕捉这个错误并防止加载项崩溃。我的代码如下。
try
{
sqlString = "select " + databaseFieldName[increase] + " from OITM where ItemCode= '" + itemCode + "'";
mRsitemCode.DoQuery(sqlString);
}
catch (System.Runtime.InteropServices.COMException ex)
{
SBO_Application.MessageBox(ex.ToString(), 1, "Ok");
}
catch (Exception b)
{
//string error;
SBO_Application.MessageBox(b.ToString(), 1, "Ok");
}
但它没有遇到我的任何 catch 块。错误如下。
类型的异常(第一次机会) 'System.Runtime.InteropServices.COMException' 发生在 Item_Variation.dll。
附加信息:1)。 [微软] [SQL Server Native Client 10.0] [SQL Server] 列名“WhsCode”无效。
2)。 [Microsoft] [SQL Server Native Client 10.0] [SQL Server] 语句 (s) 无法准备。
如果有可用于此异常的处理程序,程序可能会继续 安全运行。
我做错了什么?任何帮助将不胜感激!
【问题讨论】:
-
您确定: 1. 异常实际上发生在显示的行中,而不是其他地方? 2.异常处理程序中的行实际上并没有被执行?也许只是没有显示消息框?你能在调试器上停下来吗?
-
@KubaWyrostek :我尝试调试并在
mRsitemCode.DoQuery(sqlString);行停止,并且弹出错误消息(崩溃)。它没有遇到 catch 块。 -
您是否已将设置配置为在异常情况下中断。我不确定这是问题的原因,但可能是什么
-
@ChrisBint 不知道。 VS2010我该怎么做?原谅我只是个实习生:(
-
来自调试/异常菜单。您可以简单地选择它以不中断任何异常,但同样,不确定这是否是您的问题。可能值得一试。
标签: c# sql-server