0

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

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

4

3 回答 3

3

他会看到我所有的代码!

是的,如果你分发你的代码。如果不这样做,您希望如何看到代码?不要忘记,与大多数使用您的库的开发人员所处的情况不同,因为您的机器上有源代码。在没有源代码的机器上尝试相同的 DLL 。

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

我怀疑这真的不是问题。

于 2013-05-04T20:47:16.330 回答
2

好吧,如果您制作了库的发布版本并且您不提供调试器符号 (pdb),则库用户的调试器不应显示您的代码。OTOH,你知道反射器之类的工具吗?您的代码并不是真正的秘密。

于 2013-05-04T20:47:00.463 回答
0

如果我了解您要查找的内容,我认为您想在代码中使用 try catch 而不是处理异常的 catch 块,您想像这样重新抛出它:

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

如果我没记错的话,像这样抛出会重置堆栈跟踪,而只是抛出会保持堆栈跟踪完好无损。

于 2013-05-04T20:49:56.310 回答