首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中实现自定义异常的行业标准最佳实践是什么?

在C#中实现自定义异常的行业标准最佳实践是什么?
EN

Stack Overflow用户
提问于 2011-01-25 17:35:59
回答 4查看 37.7K关注 0票数 72

在C#中实现自定义异常的行业标准最佳实践是什么?

我在谷歌上查过,有很多推荐,但我不知道哪一个更可信。

如果任何人有任何权威文章的链接,那也会很有帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-25 18:09:49

创建自定义异常的标准是从Exception派生的。然后,您可以引入自己的属性/方法和重载构造函数(如果适用)。

下面是一个自定义ConnectionFailedException的基本示例,它接受一个特定于异常类型的额外参数。

代码语言:javascript
复制
[Serializable]
public class ConnectionFailedException : Exception
{
    public ConnectionFailedException(string message, string connectionString)
        : base(message)
    {
        ConnectionString = connectionString;
    }

    public string ConnectionString { get; private set; }
}

在应用程序中,这可以用在应用程序试图连接到数据库的场景中,例如

代码语言:javascript
复制
try
{
    ConnectToDb(AConnString);
}
catch (Exception ex)
{
    throw new ConnectionFailedException(ex.Message, AConnString);
}

然后由您在更高的级别上处理ConnectionFailedException (如果适用)

还可以了解一下Designing Custom ExceptionsCustom Exceptions

票数 67
EN

Stack Overflow用户

发布于 2012-08-14 23:20:19

下面是创建自定义异常的代码:

代码语言:javascript
复制
using System;
using System.Runtime.Serialization;

namespace YourNamespaceHere
{
    [Serializable()]
    public class YourCustomException : Exception, ISerializable
    {
        public YourCustomException() : base() { }
        public YourCustomException(string message) : base(message) { }
        public YourCustomException(string message, System.Exception inner) : base(message, inner) { }
        public YourCustomException(SerializationInfo info, StreamingContext context) : base(info, context) { }
    }
}

另请参阅:http://www.capprime.com/software_development_weblog/2005/06/16/CreatingACustomExceptionClassInC.aspx

票数 12
EN

Stack Overflow用户

发布于 2011-01-25 17:48:10

我假设您正在寻找异常处理实践。所以请看下面的文章,

http://msdn.microsoft.com/en-us/library/ms229014.aspx //提供有关异常的总体概念,包括自定义异常

http://blogs.msdn.com/b/jaredpar/archive/2008/10/20/custom-exceptions-when-should-you-create-them.aspx //

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4791823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档