不鼓励简单地抓住System.Exception.相反,只应捕获"已知"异常.
现在,这有时会导致不必要的重复代码,例如:
try
{
WebId = new Guid(queryString["web"]);
}
catch (FormatException)
{
WebId = Guid.Empty;
}
catch (OverflowException)
{
WebId = Guid.Empty;
}
Run Code Online (Sandbox Code Playgroud)
我想知道:有没有办法捕获两个异常并且只WebId = Guid.Empty调用一次呼叫?
给出的例子相当简单,因为它只是一个GUID.但是想象一下你多次修改一个对象的代码,如果其中一个操作以预期的方式失败,你想要"重置"它object.但是,如果出现意外异常,我仍然希望将其提高.
你可以写:
str match { case "foo" | "bar" => ... }
Run Code Online (Sandbox Code Playgroud)
乍一看,它看起来|可能是一个提取器对象,但是:
str match { case |("foo", "bar") => ... }
Run Code Online (Sandbox Code Playgroud)
不起作用.(我无法看到无论如何都可以实现.)
那么它是一个神奇的内置运营商?
(我相信我之前已经在SO上看过这个问题了,但是找不到......)