控制台应用程序崩溃,不执行全局try catch和UnhandledException

时间:2018-08-05 14:45:13

标签: c# .net dapper

我有一个控制台应用程序,如下所示,

static void Main(string[] args) 
{
    try
    {
        System.AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;
        // My Code
    }
    catch(Exception ex)
    {
    }
}

static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e) 
{
    // The code.
}

在上面的代码中,既不触发catch也不触发UnhandledExceptionTrapper。突然说应用程序停止工作。事件查看器没有有关崩溃的重要信息。事件查看器说有一些文件存在,但是什么都不检查。我正在使用.NET 4.6.1。

代码只是从Oracle(使用dapper)并使用TransactionScope提取数据。

编辑:我们找到了罪魁祸首。它正在包装在TransactionScope中的Oracle中进行更新。问题是无法捕捉到这些异常及其有时会出现并且在大多数情况下会失败。这些是使用Dapper更新Oracle的示例代码。

using (var scope = new TransactionScope())
{
   UpdateOracleUsingDapperMethod();
   scope.Complete();
}

编辑2018-08-07::我们发现此问题与OleDbConnection有关。因此,我们移至OracleConnection并没有崩溃。这意味着在Dapper中将Oracle与TransactionScope和OleDbConnection一起使用会遇到一些严重的问题。

1 个答案:

答案 0 :(得分:1)

我们发现此问题与OleDbConnection有关。因此,我们移至OracleConnection,没有崩溃。这意味着在TransactionScopeOleDbConnection的Dapper中使用Oracle会遇到一些严重的问题。