2013-09-25 2 views
0

Я хочу отключить предупреждение о моем выводе, , но только из выписки! Так же, как в файле .cs!#pragma warning отключить, в синтаксисе Razor, но только для определения catch

Важно! : Я не хочу удалять аргумент SystemException .! Мой конкретный спрос составляет конкретно подавляет дезинтеграцию выписки с помощью Синтаксис бритвы. То же самое, что и в файле .cs без бритвы.

Исходная ситуация:

<div> 
    @{ 
     try 
     { 
      //some code 
      <div>yes</div> 
     } 
     catch (SystemException e) 
     { 
      <div>error</div> 
     } 
    } 
</div> 

я получаю:
enter image description here переменная 'е' объявлена, но никогда не использовал

а) Если я ставлю pragma заявления вокруг catch, я получить следующую ошибку:

#pragma warning disable 0168 
catch (SystemException e) 
#pragma warning restore 0168 

enter image description here Ошибка 11 Только назначение, вызов, увеличение, уменьшение, Await и новые выражения объекта может быть использована в качестве заявления _Header.cshtml 72 13

б) Если я ставлю Razor- @ перед <div> блоком , я получаю следующее сообщение об ошибке:

@<div>error</div> 

enter image description here ошибка 5; Ожидается, _Header.cshtml 1 1

с) Если я ставлю ; после <div> блока, кажется, хорошо, но при загрузке сайта я получаю следующее сообщение об ошибке компиляции: ошибка

@<div>error</div>; 

Compilation:

Line 379:   #line default 
Line 380:   #line hidden 
Line 381:item => new System.Web.WebPages.HelperResult(__razor_template_writer => { 
Line 382: 
Line 383:BeginContext(__razor_template_writer, "~/Views/Shared/_Header.cshtml", 1947, 16, true); 

ответ

2

Если вы никогда не используете исключение улова, вы можете просто сделать это:

<div> 
@{ 
    try 
    { 
     //some code 
     <div>yes</div> 
    } 
    catch 
    { 
     <div>error</div> 
    } 
} 
</div> 

Хотя я считаю, что обертывание прагмами вокруг вашего улова просто игнорирование предупреждения об неиспользованной переменной - это, откровенно говоря, отвратительное предложение (оно не только выглядит уродливым, но, я думаю, оно уменьшает читаемость и путает вопросы - используете ли вы ? переменная или нет), если вы действительно нужно сделать это, попробуйте следующее:

<div> 
@{ 
    try 
    { 
     //some code 
     throw new SystemException(); 
     <div>yes</div> 
    } 

    catch 
    (
    #pragma warning disable 0168 
     SystemException e 
    #pragma warning restore 0168 
    ) 
    { 
     <div>error</div> 
    } 
} 
</div> 
+0

Спасибо, это ясно, но я ** специально ** хочу подавить предупреждение! –

+0

Хорошо. Добавлена ​​ссылка на другой пост, делающий что-то, что может помочь. –

+0

Еще раз спасибо, я прочитал другую тему раньше, что работает, но мое конкретное требование было бы, просто для подавления ослабления линии улова в Razor. Может быть, есть решение. Независимо от вопроса, полезно ли его подавить предупреждение или нет. Но, тем не менее, это правильный вопрос, но для другой темы. –

0

Если вам не нужна переменная e, но все-таки нужно конкретно поймать SystemException исключений, вы можете просто использовать :

<div> 
    @try 
    { 
     // Some code here. 
    } 
    catch (SystemException) 
    { 
     <div> 
      A system error occurred. 
     </div> 
    } 
</div> 

Нет необходимости использовать #pragma для подавления предупреждения, если вы можете избежать его с помощью действительного кода. Предупреждения существуют по какой-то причине.

Смежные вопросы