Оператор NOT в C#

Я не могу найти, "не" оператор в C#. Например, у меня есть код, ниже которого не работает. Я должен проверить это err не имеет класса типа ThreadAbortException.

    catch (Exception err)
    {
        if (err is not ThreadAbortException)
        {
        }
    }
15
задан Peter Mortensen 18 January 2011 в 17:19
поделиться

6 ответов

Просто измените блок catch на :

catch(ThreadAbortException ex)
{
}
catch(Exception ex)
{
}

, чтобы вы могли обрабатывать исключения ThreadAbortExceptions и все остальные отдельно.

35
ответ дан 30 November 2019 в 23:49
поделиться

Скорее всего, в этой ситуации вам следует сделать следующее:

try
{
   // Do Something
}
catch (ThreadAbortException threadEx)
{
   // Do something specific
}
catch (Exception ex)
{
   // Do something more generic
}

У вас может быть несколько блоков catch для ] попробуйте . Всегда следите за тем, чтобы они располагались так, чтобы наиболее конкретные были сверху, а наиболее общие ( catch (Exception ex) ) были последними, потому что порядок поиска - сверху вниз, поэтому, если вы поместите catch (Exception ex) первым, он всегда будет запускаться единственным.

7
ответ дан 30 November 2019 в 23:49
поделиться

Возможно, вы ищете это:

if(err.GetType() != typeof(ThreadAbortException))
{

}

Но я настоятельно рекомендую использовать отдельный оператор catch, как предложил Ли.

catch(ThreadAbortException ex)
{

}
catch(Exception ex)
{

}
2
ответ дан 30 November 2019 в 23:49
поделиться

У вас должно получиться что-то вроде этого:

catch (Exception err){
    if (!(err is ThreadAbortException)) {
    //Code
    }
}
2
ответ дан 30 November 2019 в 23:49
поделиться

В этом случае оберните и проверьте логическое значение напротив:

if (!(err is ThreadAbortException))
35
ответ дан 30 November 2019 в 23:49
поделиться

Lee дал лучший ответ.

Просто добавлю, что вы всегда должны переходить от самого конкретного к самому общему. В вашем случае ThreadAbortException является наиболее специфичным, так что сначала разберитесь с ним.

1
ответ дан 30 November 2019 в 23:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: