我怎样才能区分C#中的404错误和500错误?

时间:2016-05-18 09:05:32

标签: c# asp.net-mvc-4 exception-handling

我正在建立一个网站。我遇到了抛出404和500等不同错误的问题。

        try
        {
           //logic comes here
        }
        catch(HttpException he)
        {
            throw he;
        }

现在404和500都属于HttpException。但是这两种类型都有一些其他的自定义逻辑。我如何区分两者,以便我可以编写两个catch块?

3 个答案:

答案 0 :(得分:1)

你可以这样做:

try
{
    //logic comes here
}
catch (WebException e)
{
    var code = ((HttpWebResponse)e.Response).StatusCode;
    if(code == HttpStatusCode.BadRequest)
    {
        //some logic1
    }
    if(code == HttpStatusCode.InternalServerError)
    {
        //some logic2
    }
}

答案 1 :(得分:1)

假设C#6,您可以使用http://bugreport.sun.com/bugreport/crash.jsp根据状态代码将处理拆分为不同的catch块:

{!! Form::open() !!}
{!! Form::model() !!}

答案 2 :(得分:0)

使用HttpException.GetHttpCode()方法查找它是500还是404.

更多详情https://msdn.microsoft.com/en-us/library/system.web.httpexception.gethttpcode(v=vs.110).aspx