1

我想禁用我的 catch 语句的警告,但只禁用 catch 语句!与 .cs 文件中的方式相同!

重要的!:我不想删除SystemException e参数!我的具体要求专门抑制使用Razor语法的 catch 语句的警告。与在没有剃刀的 .cs 文件中的工作方式相同。

初始情况:

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

我得到:
在此处输入图像描述变量'e'已声明但从未使用过

a)如果我将pragma语句放在 周围catch,我会收到以下错误:

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

在此处输入图像描述错误11 只有assignment、call、increment、decrement、await和new对象表达式可以作为语句使用_Header.cshtml 72 13

@b)如果我在块之前放了一个 Razor- <div>,我会收到以下错误:

@<div>error</div>

在此处输入图像描述错误 5 ; 预期 _Header.cshtml 1 1

c)如果我;在块之后放一个<div>,看起来还可以,但是在加载站点时我得到以下编译错误:

@<div>error</div>;

编译错误:

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);
4

2 回答 2

3

如果你从不使用 catch 异常,你可以这样做:

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

虽然我认为将 pragma 包装在你的 catch 周围只是为了忽略关于未使用变量的警告,坦率地说,这是一个可怕的提议(不仅看起来很难看,而且我认为它会降低可读性,并且会混淆问题 - 你是否使用了变量?),如果你真的需要这样做,试试这个:

<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>
于 2013-09-25T09:47:12.340 回答
0

如果您不需要该e变量,但仍需要专门捕获SystemException异常,则可以使用:

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

#pragma如果您可以使用有效代码避免警告,则无需使用来抑制警告。警告是有原因的。

于 2013-09-25T20:40:05.780 回答