2013-05-04 120 views
0

我正在开发一个将由程序员使用的库。 当我抛出一个异常时,调试器会转到引发异常的地方,而不是类实例化或方法执行的地方。抛出类实例化的异常 - C#

使用try .. catch可以解决这个问题,但是如果使用库的程序员不能打开try .. catch?他会看到我所有的代码! 我该如何避免这种情况?

+1

您是否尝试用DebuggerNonUserCodeAttribute(http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggernonusercodeattribute.aspx)标记代码(类或方法) – 2013-05-04 20:46:56

回答

2

那么,如果你制作了你的库的发布版本,而你没有提供调试器符号(pdb),则库用户的调试器不应该显示你的代码。 OTOH,你知道反射器这样的工具吗?你的代码不是一个真正的秘密。

3

他会看到我所有的代码!

好的,如果你分发你的代码。如果你不这样做,你会如何看待代码被看到?不要忘记,对于大多数使用库的开发人员而言,您处于不同的情况,因为您的计算机上有源代码。试一试有没有有源代码的机器上的同一个DLL。

开发人员可能会看到您的代码的反编译版本,也许 - 这是一个很大的问题?如果是这样,你应该看看混淆你的代码 - 但要知道,这也带来一些后勤方面的缺陷。

我怀疑这真的不是问题。

0

如果我知道你在找什么,我认为你想在你的代码,而不是在那里你处理异常要重新抛出这样一个catch块使用尝试捕捉:

try 
    { 
     //exception code 
    } 
    catch (Exception e) 
    { 
     throw e; 
    } 

如果我没有记错的话,像这样扔就会重置堆栈轨迹,而只是一个throw会保持堆栈轨迹的完整。