【问题标题】:can i define my own exception types in c#.net? if yes, how..? [duplicate]我可以在 c#.net 中定义自己的异常类型吗?如果是,如何..? [复制]
【发布时间】:2013-08-26 15:17:45
【问题描述】:

示例:

是否可以定义自己的异常类型?

考虑我在代码后面或 BL 或 DA 层中有自己的自定义方法:

public void my_first_method()
{
  // some custom code execution..
  //might throw some errors..
}
//so.. if am not wrong..
//can i have something in my event handler like..

try
{

  my_first_method();
  my_second_method();
  my_third_method();

}
catch(my_first_methodException fex)
{

}
catch(my_second_methodException sex)
{

}
catch(my_third_methodException tex)
{

}
catch(Exception ex)
{
  //if doesn't belongs to above 3 exception come here..
}

我正在尝试找出这是否可能。请指教。提前致谢。

【问题讨论】:

  • 我可能会重命名用于捕获和处理 my_second_methodException 类型的变量。除此之外,通过派生 Exception 类来定义自己的异常并没有错。
  • 你试过什么?在 msdn.microsoft.com 中搜索自定义异常 .net msdn.microsoft.com/en-us/library/vstudio/…

标签: c# asp.net .net exception-handling


【解决方案1】:

是的;只需创建一个继承Exception 的类,并添加适当的构造函数。

有关详细信息,请参阅MSDN

例如:

[Serializable]
public class NewException : Exception
{
    public NewException() : base("Default message for this type") { }
    public NewException(string message) : base(message) { }
    public NewException(string message, Exception inner) : base(message, inner) { }

    // This constructor is needed for serialization.
   protected NewException(SerializationInfo info, StreamingContext context)
    : base(info, context) { }
}

【讨论】:

  • 谢谢,但是你如何在你的 catch 块中调用它,是不是像“throw new NewException(ex.Message,?); 你将什么作为值传递给第二个参数?跨度>
  • @PrathapSVGenny:如果你有一个内部异常,你应该只 psss 一个内部异常。 (如果您要在不同的 catch 块中添加更多信息)
  • @PrathapSVGenny:见stackoverflow.com/a/2999314/34397
【解决方案2】:

还值得一提的是,您可以使用 Visual Studio sn-p 创建异常。只需键入“异常”和选项卡,然后为其命名并添加任何自定义属性等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多