在工具/异常中,我设置了调试器在抛出异常时停止的选项.是否被抓住.
如何排除该规则的例外?在我的代码中的某处有一个被捕获的异常,它是程序逻辑的一部分.所以我显然不希望该异常在每次命中时停止调试器.
示例:我想忽略第344行的nullreference异常(捕获).我想停止所有其他例外
在我解释我想做什么之前,如果你看下面的代码,你会明白它应该做什么吗?(更新 - 见下文)
Console.WriteLine(
Coalesce.UntilNull(getSomeFoo(), f => f.Value) ?? "default value");
Run Code Online (Sandbox Code Playgroud)
C#已经有一个null-coalescing运算符,它在简单对象上运行得很好,但如果你需要访问该对象的一个成员则无效.
例如
Console.WriteLine(getSomeString()??"default");
Run Code Online (Sandbox Code Playgroud)
效果很好,但它不会帮助你:
public class Foo
{
public Foo(string value) { Value=value; }
public string Value { get; private set; }
}
// this will obviously fail if null was returned
Console.WriteLine(getSomeFoo().Value??"default");
// this was the intention
Foo foo=getSomeFoo();
Console.WriteLine(foo!=null?foo.Value:"default");
Run Code Online (Sandbox Code Playgroud)
由于这是我经常遇到的事情,我想到使用扩展方法(旧版本):
public static class Extension
{
public static TResult Coalesce<T, TResult>(this T obj, Func<T, TResult> func, TResult defaultValue)
{
if (obj!=null) return func(obj);
else return …Run Code Online (Sandbox Code Playgroud)