Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL命令中的Try-Catch不一致的问题,在C中执行#_C#_Sql_Sql Server_Error Handling_Try Catch - Fatal编程技术网

C# SQL命令中的Try-Catch不一致的问题,在C中执行#

C# SQL命令中的Try-Catch不一致的问题,在C中执行#,c#,sql,sql-server,error-handling,try-catch,C#,Sql,Sql Server,Error Handling,Try Catch,我使用Try-Catch跳过C#中一些容易出错的SQL命令,但有时仍会出现执行/运行时错误 我使用SQL server数据库的C#代码将频繁运行。在第一次运行时,我试图在代码中的某个地方更新一个尚不存在的表(稍后将在代码中创建讨论中的表)。我将查询部分放在了一个try-catch中,但有时仍然会出现无效对象名“destination\u table”的错误。 我的代码如下: string query_str = " BEGIN TRY " +

我使用Try-Catch跳过C#中一些容易出错的SQL命令,但有时仍会出现执行/运行时错误

我使用SQL server数据库的C#代码将频繁运行。在第一次运行时,我试图在代码中的某个地方更新一个尚不存在的表(稍后将在代码中创建讨论中的表)。我将查询部分放在了一个try-catch中,但有时仍然会出现
无效对象名“destination\u table”
的错误。 我的代码如下:

string query_str =
                " BEGIN TRY " +
                " UPDATE [my_DB].[dbo].[destination_table] " +
                " SET the_column = 'the_value' " +
                " END TRY " +
                " BEGIN CATCH " +
                " END CATCH ";
using (SqlCommand my_command = new SqlCommand(query_str , conn))                
 { form_rack_command.ExecuteNonQuery();  }
这个链接中的解决方案似乎不错 但我的问题是我不能总是重现错误。有时,当我启动计算机并打开Microsoft Visual Studio时,似乎在程序第一次运行时就出现了错误。但是,即使不关闭系统并重新启动所有程序,也可能导致错误。
是什么原因导致我有时会遇到这个问题,有时不会呢?

SQL Try/Catch没有帮助,因为这是一个编译错误。您可能并不总是想到它,但当您向服务器提交脚本时,它首先被编译,然后被执行。Try/Catch如果因为编译错误而没有执行任何代码,则没有任何帮助。“我使用Try-Catch跳过C#中一些容易出错的SQL命令,但有时仍然会出错。”因为
Try
并不能阻止所有错误,仅仅扔掉错误是一个愚蠢的想法(因为没有更好的词);解决问题不要忽视它。。。这就像编写一个VB应用程序,然后在错误恢复下一步执行
;这从来都不是个好主意。这里真正的问题是你忽略了你的应用程序向你抛出的所有错误,你真的应该看看它们并解决它们,这样错误就不会再发生了。@Damien\u不信者感谢你的回答。那么,您是说当我在C#中使用SQL try catch时,它将不起作用?那么,为什么有时候它会工作并捕获错误呢?“那么,你说当我在C#中使用SQL try catch时,它不会工作吗?”这根本不是@Damien_不信者所说的,Iraj。他们明确表示,
TRY…CATCH
不会“捕获”编译错误。它也不会“捕捉”语法错误。@Larnu我编辑了我文章的这一部分。当我说“我仍然得到错误”时,我指的是运行时错误、执行失败和没有通过try-catch捕获错误。我有意这样编写代码,因为缺少上述表只会发生一次(第一次),而代码将永远(经常)运行