C# 捕获结构为空的InvalidOperationException

C# 捕获结构为空的InvalidOperationException,c#,exception-handling,invalidoperationexception,C#,Exception Handling,Invalidoperationexception,我试图捕获在声明变量时有时会发生的InvalidOperationException。但是,下面的代码不起作用。可能是因为我真的不知道如何捕捉异常 public override void Download() { try { var t = (ForumThread)Globals.Db.Thread.Get(_extIdForumThread, _idF);

我试图捕获在声明变量时有时会发生的
InvalidOperationException
。但是,下面的代码不起作用。可能是因为我真的不知道如何捕捉异常

public override void Download()
{
    try
    {                                           
        var t = (ForumThread)Globals.Db.Thread.Get(_extIdForumThread, _idF);            
        try
        {
            throw new InvalidOperationException();
        }
        catch (InvalidOperationException exception)
        {
            return;
        }
        catch (Exception exception)
        {
            throw;
        }
    }
}

任何帮助都将不胜感激。

您不需要自己抛出异常。只要有:

    try
    {                                           
        var t = (ForumThread)Globals.Db.Thread.Get(_extIdForumThread, _idF);
    }
    catch (InvalidOperationException exception)
    {
        // Error logging, post processing etc.
        return;
    }

你也不应该真的捕捉到一般异常,除非你有很好的理由——即你的应用程序不能崩溃,但如果你这样做了,你需要能够从中恢复。

你不需要自己抛出异常。只要有:

    try
    {                                           
        var t = (ForumThread)Globals.Db.Thread.Get(_extIdForumThread, _idF);
    }
    catch (InvalidOperationException exception)
    {
        // Error logging, post processing etc.
        return;
    }

您也不应该真的捕获到一般异常,除非您有很好的理由,即您的应用程序不能崩溃,但如果您这样做,您需要能够从中恢复。

非常感谢。这就解决了我的问题。但是在我的项目中,我遇到了无法编译项目的问题,因为函数正在使用变量t,当它在try-catch中声明时,我得到“名称‘t’在当前上下文中不存在”我怎样才能避开它?@AndréHegge-如果你想在
try
之外使用变量
t
,那么你需要在
try
之外声明它。尽管尝试在异常处理程序中引用它可能不明智,因为它很可能未设置或包含错误的值。非常感谢。这就解决了我的问题。但是在我的项目中,我遇到了无法编译项目的问题,因为函数正在使用变量t,当它在try-catch中声明时,我得到“名称‘t’在当前上下文中不存在”我怎样才能避开它?@AndréHegge-如果你想在
try
之外使用变量
t
,那么你需要在
try
之外声明它。尽管尝试在异常处理程序中引用它可能不明智,因为它很可能未设置或包含错误的值。