我的C#代码中的LicenseException

时间:2014-04-07 14:42:01

标签: c# .net wcf

我正在为我的WCF组件添加许可证检查,并在System.ComponentModel命名空间中找到了LicenseException。 如果用户输入无效的许可证密钥,我可以自由使用此异常类,或者创建自己的许可证密钥会更好吗?

我真的想找到更一般性问题的答案。抛出我在.NET中可以找到的任何类型的异常是安全的,例如ExecutionEngineException似乎是非常内部的东西。

if (!LicenceHelper.CheckLicence())
    throw new ApplicationException("Invalid Serial Key or Activation Key");
    throw new LicenseException(typeof(DataProvider));

哪一行代码优于第三代?

1 个答案:

答案 0 :(得分:0)

我个人会选择选项3,编写自己的自定义异常并抛出它。

class InvalidSerialException : ApplicationException
{
    public InvalidSerialException() :
        base("Invalid Serial Key or Activation Key")
    {
    }

    public InvalidSerialException(string message) : base(message)
    {
    }

    public InvalidSerialException(string message, Exception innerException) : base(message, innerException)
    {
    }

    protected InvalidSerialException(SerializationInfo info, StreamingContext context) : base(info, context)
    {
    }
}



//elsewhere
if (!LicenceHelper.CheckLicence())
    throw new InvalidSerialException());

这为您提供了更大的灵活性,例如,如果您希望在异常的有效负载中包含尝试的串行密钥,则可以使用自定义异常,但不能轻松处理.NET内置的两个异常。此外,它还可以更容易地在您的调用方法中捕获您想要的异常,而不是仅仅希望您捕获的ApplicationException是您想要捕获的ApplicationException