抛出类实例化的异常 - C#
问题描述:
我正在开发一个将由程序员使用的库。 当我抛出一个异常时,调试器会转到引发异常的地方,而不是类实例化或方法执行的地方。抛出类实例化的异常 - C#
使用try .. catch可以解决这个问题,但是如果使用库的程序员不能打开try .. catch?他会看到我所有的代码! 我该如何避免这种情况?
答
那么,如果你制作了你的库的发布版本,而你没有提供调试器符号(pdb),则库用户的调试器不应该显示你的代码。 OTOH,你知道反射器这样的工具吗?你的代码不是一个真正的秘密。
答
他会看到我所有的代码!
好的,如果你分发你的代码。如果你不这样做,你会如何看待代码被看到?不要忘记,对于大多数使用库的开发人员而言,您处于不同的情况,因为您的计算机上有源代码。试一试有没有有源代码的机器上的同一个DLL。
开发人员可能会看到您的代码的反编译版本,也许 - 这是一个很大的问题?如果是这样,你应该看看混淆你的代码 - 但要知道,这也带来一些后勤方面的缺陷。
我怀疑这真的不是问题。
答
如果我知道你在找什么,我认为你想在你的代码,而不是在那里你处理异常要重新抛出这样一个catch块使用尝试捕捉:
try
{
//exception code
}
catch (Exception e)
{
throw e;
}
如果我没有记错的话,像这样扔就会重置堆栈轨迹,而只是一个throw会保持堆栈轨迹的完整。
您是否尝试用DebuggerNonUserCodeAttribute(http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggernonusercodeattribute.aspx)标记代码(类或方法) – 2013-05-04 20:46:56