官术网_书友最值得收藏!

Exception filters

You can filter exceptions more easily with the when keyword. You no longer need to catch every type of exception that you are interested in and then filter it manually inside the catch block. This is a feature that was already present in VB and F#, so it's nice that C# has finally caught up.

There are some small benefits to this approach. For example, if your filter is not matched, then the exception will still be caught by other catch blocks in the same try statement. You also don't need to remember to rethrow the exception to avoid it from being swallowed. This helps with debugging, as Visual Studio will no longer break as it would when you use throw.

For example, you could check to see whether there is a message in the exception and handle it differently, as shown here:

catch (Exception e) when (e?.Message?.Length > 0)

When this feature was in development, a different keyword (if) was used. So be careful of any old information online.

One thing to keep in mind is that relying on a particular exception message is fragile. If your application is localized, then the message may be in a different language to what you expect. This holds true outside of exception filtering too.

主站蜘蛛池模板: 班戈县| 襄城县| 姜堰市| 长宁县| 凌云县| 虹口区| 和顺县| 延安市| 福鼎市| 龙州县| 木兰县| 平罗县| 逊克县| 安多县| 土默特左旗| 抚顺市| 宾阳县| 阿瓦提县| 葫芦岛市| 卓资县| 钟祥市| 荔浦县| 白山市| 宁安市| 邢台县| 五家渠市| 米泉市| 米脂县| 全州县| 松江区| 邢台县| 观塘区| 龙川县| 光山县| 漳平市| 阜城县| 荣昌县| SHOW| 个旧市| 黔西县| 砀山县|