您的位置:首页 > 编程语言 > C#

C# 6.0 (C# vNext) 新功能之:Exception-Handling Improvements

2014-10-14 21:33 453 查看
在 C# 6.0 新功能裹的异常处理,有两个改进:

异步处理(async and await)可以在 catch block 裹使用了。在 C# 5.0 推出的 async and await,当时不可以用於 catch block,现在已经可以了。
支持异常过滤 exception filtering

异步处理的例子:

try
{
WebRequest webRequest = WebRequest.Create("http://www.csdn.net");
WebResponse response = await webRequest.GetResponseAsync();
// ...
}
catch (WebException exception)
{
await WriteErrorToLog(exception);
}


异常过滤,这算是让 C# 跟上 Visual Basic .NET 和 F# 在这方面的支持。

如下例子:

try
{
DoSomeHttpRequest();
}
catch (System.Web.HttpException e) if (e.GetHttpCode() == 400)
{
WriteLine("Not Found");
}
catch (System.Web.HttpException e) if (e.GetHttpCode() == 500)
{
WriteLine("Internal Server Error");
}
catch
{
WriteLine("Generic Error");
}


比较一下之前的写法:

try
{
DoSomeHttpRequest();
}
catch (System.Web.HttpException e)
{
switch (e.GetHttpCode())
{
case 400:
WriteLine("Bad Request");
case 500:
WriteLine("Internal Server Error");
default:
WriteLine("Generic Error");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: