相关疑难解决方法(0)

"throw"和"throw ex"之间有区别吗?

有些帖子询问这两者之间的区别是什么.
(为什么我还要提这个...)

但我的问题是不同的,我称之为"抛出前"在另一个错误的神像处理方法.

public class Program {
    public static void Main(string[] args) {
        try {
            // something
        } catch (Exception ex) {
            HandleException(ex);
        }
    }

    private static void HandleException(Exception ex) {
        if (ex is ThreadAbortException) {
            // ignore then,
            return;
        }
        if (ex is ArgumentOutOfRangeException) { 
            // Log then,
            throw ex;
        }
        if (ex is InvalidOperationException) {
            // Show message then,
            throw ex;
        }
        // and so on.
    }
}
Run Code Online (Sandbox Code Playgroud)

如果try & catch用于Main,那么我会throw; …

.net c# exception-handling exception

414
推荐指数
8
解决办法
18万
查看次数

捕获和重新抛出.NET异常的最佳实践

捕获异常并重新抛出异常时需要考虑哪些最佳实践?我想确保保留Exception对象InnerException和堆栈跟踪.以下代码块在处理此方式时是否存在差异?

try
{
    //some code
}
catch (Exception ex)
{
    throw ex;
}
Run Code Online (Sandbox Code Playgroud)

VS:

try
{
    //some code
}
catch
{
    throw;
}
Run Code Online (Sandbox Code Playgroud)

.net c# exception-handling rethrow

279
推荐指数
8
解决办法
18万
查看次数

66
推荐指数
2
解决办法
2万
查看次数

throw e和throw new Exception(e)有什么区别?

考虑:

try  {
    // Some code here
} catch (IOException e) {
    throw e;
} catch (Exception e) {
    throw e;
}
Run Code Online (Sandbox Code Playgroud)

throw e和之间有什么区别throw new Exception(e)

try  {
   // Some code here
} catch (IOException e) {
   throw new IOException(e);
} catch (Exception e) {
   throw new Exception(e);
}
Run Code Online (Sandbox Code Playgroud)

java exception try-catch throw

38
推荐指数
2
解决办法
5431
查看次数

堆栈跟踪上的行号错误

我有这个代码

try
{
  //AN EXCEPTION IS GENERATED HERE!!!
}
catch  
{
   SqlService.RollbackTransaction();
   throw;
}

上面的代码在此代码中调用

try
{
  //HERE IS CALLED THE METHOD THAT CONTAINS THE CODE ABOVE
}
catch (Exception ex)
{
   HandleException(ex);
}

作为参数传递给方法"HandleException"的异常包含堆栈跟踪中"throw"行的行号,而不是生成异常的实际行.任何人都知道为什么会发生这种情况?

编辑1 好的,谢谢大家的答案.我更改了内部捕获


catch(Exception ex)
{
    SqlService.RollbackTransaction();
    throw new Exception("Enrollment error", ex);
}

现在我在堆栈跟踪上有正确的行,但我不得不创建一个新的异常.我希望找到更好的解决方案:-(

EDIT2 也许(如果你有5分钟)你可以尝试这种情况,以检查你是否得到相同的结果,而不是很复杂的重新创建.

c# exception-handling try-catch

30
推荐指数
4
解决办法
7394
查看次数

在catchblock中使用"Throw"(没有别的!)

可能重复:
throw和throw之间的差异新异常()

我是一名致力于为遗留代码添加新功能的程序员.在调试时,我解析了这个Catch块,它从Visual Studio得到了一个愤怒的"对象未设置为对象的引用"通知:

catch(Exception ex)
            {
                SporeLog.Log("Failed to create new SavedDocumentList with Name: " + name, ex);
                throw;
            }
Run Code Online (Sandbox Code Playgroud)

"扔"是什么意思.我很熟悉,throw new [exceptiontype]...但这对......来说意味着什么throw

这是一个好的做法,还是应该改变这些代码以简化开发人员对我的试验?

为什么Visual Studio会因此而对我大喊大叫呢?

c# try-catch throw visual-studio-2008

7
推荐指数
2
解决办法
1121
查看次数

无效的列名异常

我试图在我的代码中获得一个简单的 SQL 语句,并获得一个DataTable,由于某种原因,我得到了这个奇怪的异常:

列名无效

这是我的代码:

public DataTable GetAllVideoID(string stringId)
    {
        dt = new DataTable();
        dataObj = new DataObj();
        sql = "SELECT * FROM TBL_VIDEOS WHERE TBL_VIDEOS.ID=" + stringId;

        return dt = dataObj.SelectDataTable(sql);
    }

public DataTable SelectDataTable(string sql)
    {
        try
        {
            conn = new SqlConnection(conString);
            conn.Open();
            adapter = new SqlDataAdapter(sql, conn);

            dt = new DataTable();

            adapter.Fill(dt);



            return dt;
        }
        catch (Exception e)
        {

            throw e;
        }
        finally { conn.Close(); }

    }
Run Code Online (Sandbox Code Playgroud)

当我在我的管理工具上运行它时,只是 statemnet - 它完美地工作。所以我不知道..

我的数据库结构:ID、TITLE、V_DESCIPTION、UPLOAD_DATE、V_VIEW、USERNAME、RATING、V_SOURCE、FLAG

谢谢 :)

sql-server ado.net

2
推荐指数
1
解决办法
6830
查看次数

什么方法的EF 6更适合用于从数据库asyn获取数据?

我有下一个代码

public async Task<IEnumerable<MyTabel>> GetData()
        {
            try
            {
                var dbCtx = new myEntities();

                return await dbCtx.MyTabel.ToListAsync();
                //return await dbCtx.MyTabel.ToArrayAsync();
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
Run Code Online (Sandbox Code Playgroud)

我想知道什么是ToListAsync或ToArrayAsync方法更适合性能?有人知道吗 ?

谢谢.

UPDATE

对我来说,性能是eqval tp更少的内存使用,更快的查询时间,更高的并发性

c# asp.net entity-framework

1
推荐指数
1
解决办法
825
查看次数

C#异步方法 - 需要帮助

我有一个消耗Web API操作的异步方法.它似乎陷入了一个循环.我的理由是因为如果我在catch块的第1行放置一个断点,并且进入,它实际上从未击中第二行.

我最初返回一个包含100,000+(~30mb)行的数据集,并认为由于请求的大小,它可能会很慢,但在更改我的Web API操作以仅返回1行后问题仍然存在.当我浏览到Web API解决方案的URI时,肯定会返回数据,我在浏览器中返回了JSON.

public async Task<IEnumerable<Document>> GetAll()
{
    try
    {
        var response = await _client.GetAsync(
                       string.Format("{0}/api/document", _baseURI));

        // never hits line below
        return await response.Content.ReadAsAsync<Document>() 
                   as IEnumerable<Document>;
    }
    catch (Exception ex)
    {
        // handle exception
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定我在这里遗失了什么?一些帮助将不胜感激.

编辑1

在回答一些问题时,我有一个由MVC项目引用的Web API项目.我必须对JSON反序列化的原始问题进行一些更改.

库:

public async Task<IEnumerable<Document>> GetAll()
{
    try
    {
        string json;
        var response = await _client.GetAsync(string.Format(
                       "{0}/api/document", _baseURI)).ConfigureAwait(false);

        var resource = await response.Content.ReadAsAsync<Document>();

        using(var reader = new StreamReader(resource.ToString()))
        {
            json = reader.ReadToEndAsync().ToString();
        }

        return JsonConvert.DeserializeObjectAsync<Document>(json) 
                       as IEnumerable<Document>;
        } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asynchronous async-await asp.net-web-api

0
推荐指数
1
解决办法
2210
查看次数