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

在 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");
    }
}

时间: 2024-10-12 04:34:10

C# 6.0 (C# vNext) 新功能之:Exception-Handling Improvements的相关文章

C# 6.0 (C# vNext) 新功能之:Semicolon operator

虽然这个功能在正式版本中可能不会有,但了解一下也无妨. Semicolon operator:分号运算符 为何叫 operator? 一般我们看到的,像加法.减法等运算符,但这个也叫操作法是为什麽? 我们先看一下例子: var result = (var x = Foo(); Write(x); x * x); 意思是: 宣告变量 result 宣告变量 x 呼叫 Foo 方法 将 Foo 方法的回传值,指定给 x 呼叫 Write 方法,并传入 x 的值 执行 x * x 将 x * x 的值

C# 6.0 (C# vNext) 新功能之:Expression Bodied Functions and Properties

Expression Bodied Function 可以用在: methods user-defined operators type conversions read-only properties indexers 看以下的例子: public class RgbColor(int r, int g, int b) { public int Red { get; } = r; public int Green { get; } = g; public int Blue { get; } =

C# 6.0 (C# vNext) 新功能之:Numeric Literal Formats

Numeric Literal Formats = Binary literals and separators 个人解释为 「2 位元(2 进位)实字以及分隔符」 以前可以用的,主要就十进位以及十位进位如下: var num1 = 1234; // 10 进位 var num2 = 0x1234; // 16 进位 2 进位实字怎麽宣告? var num3 = 0b1010; // 2 进位,代表的 10 进位数字是 10 而当我们使用 2 进位宣告实字时,那数字一下子就会非常的长,比如: v

AndroidStudio3.0 下载使用新功能介绍

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> AndroidStudio3.0 下载使用新功能介绍 - 天平 - 博客频道 - CSDN.NET 天平 向着目标一步一步走. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的Python,终于等到你!    &

C# 8.0中的新功能

微信公众号:Fintech极客 作者为软件开发工程师,就职于金融信息科技类公司,通过CFA一级,分享计算机和金融相结合领域的技术和知识. C# 8.0中的新功能 C# 8.0已经推出来好长一段时间了, 由于公司目前主要使用的还是6.0版本,加上之前个人事情较多,一直没有总结,今天主要查看和测试微软官方文档中的内容:https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8 只读成员(Readonly members) 在st

Kafka 0.11版本新功能介绍 —— 空消费组延时rebalance

在0.11之前的版本中,多个consumer实例加入到一个空消费组将导致多次的rebalance,这是由于每个consumer instance启动的时间不可控,很有可能超出coordinator确定的rebalance timeout(即max.poll.interval.ms),而每次rebalance的代价又相当地大,因为很多状态都需要在rebalance前被持久化,而在rebalance后被重新初始化.曾经有个国外用户,他有100个consumer,每次rebalance的时间甚至要1个

vSphere 6.0 U1发布新功能说明

如您所知,VMworld2015上对于vSphere并没有什么太多提及,但是,Virtual SAN却是一个重要话题.而Virutual SAN内置于vSphere里面.所以,更新Virtual SAN 6.1的方式就是升级vSphere平台.所以,vSphere 6.0 U1快速发布了,这个版本的vSphere其实除了Virtual SAN 6.1外,没有什么太多新东西增加,具体清单如下:8 V0 ~) @& z Q3 x$ M/ n' H2 E) u7 o D% I4 {$ q3 \; L-

Android Studio 3.0 下载 使用新功能介绍

谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.google.cn/studio/archive.html 选择显示全部即可看到下载地址,这里给出来了. Windows (64-bit): android-studio-ide-171.4010489-windows.zip (702075896 bytes) https://dl.google.c

Apache Flink 1.3.0正式发布及其新功能介绍

下面文档是今天早上翻译的,因为要上班,时间比较仓促,有些部分没有翻译,请见谅. 2017年06月01日儿童节 Apache Flink 社区正式发布了 1.3.0 版本.此版本经历了四个月的开发,共解决了680个issues.Apache Flink 1.3.0 是 1.x.y 版本线上的第四个主要版本,其 API 和其他 1.x.y 使用 @Public 注释的API是兼容的. 此外,Apache Flink 社区目前制定了每四月发行一个主要版本(Apache Flink 1.2.0 是201