有时,我想知道在我的产品代码中抛出NullReferenceException
(或类似内容)的位置,而不会泄露任何客户信息。我倾向于做这样的事情(简化例子):
int flags = 0;
try{
SomeOperation(foo.bar);
flags |= 1 << 0;
SomeOtherOperation(bar.foo);
if (SomeCondition(baz.bar)){
flags |= 1 << 1;
stuff = bar.bar;
flags |= 1 << 2;
}
while(SearchForStuff(bar.foo, foo.bar)){
const int mask = (1 << 3) - 1;
flags &= mask;
flags |= 1 << 3;
if (StuffExists(foo.bar.foo)){
flags |= 1 << 4;
DoThings(foo);
}
}
flags |= 1 << 5;
Baz result = bar.foo.DoBar(foo);
flags |= 1 << 6;
return result;
}
catch (NullPointerException e){
SendCrashReport(e + " flags:" + flags);
}
我的问题是有没有办法在编译时增加位移,这样可以添加一些逻辑和flag
增量,而不必修改以下flag
增量的位移? / p>
编辑:我们目前没有在应用程序中包含调试符号,我不知道是否会有。
编辑2:我意识到|=
对+=
的情况可能优于1 << 32
。