gpt4 book ai didi

c# - 为什么在 C# Exception 类中没有带有 1 个 Exception 参数的构造函数?

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:14 25 4
gpt4 key购买 nike

System.Exception 类有 4 个构造函数:

public Exception();
public Exception(string message);
protected Exception(SerializationInfo info, StreamingContext context);
public Exception(string message, Exception innerException);

为什么没有这个构造函数?

public Exception(Exception innerException);


这是一个有用的地方。

我有一个静态方法来获取打开的连接:

public static DbConnection GetOpenConnection(string dataProvider, string connectionString) 
{
DbConnection dbConnection = GetDbProviderFactory(dataProvider).CreateConnection();
dbConnection.ConnectionString = connectionString;
dbConnection.Open();
return dbConnection;
}

我希望此方法在发生任何错误时抛出自定义异常 GetOpenConnectionException

所以我创建了自定义异常GetOpenConnectionException:

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

由于 Exception 没有构造函数 public Exception(Exception innerException),所以我不能在 GetOpenConnectionException 中包含此代码:

public GetOpenConnectionException(Exception innerException) : base(innerException)
{
}

所以我不得不这样编写 GetOpenConnection() 方法:

public static DbConnection GetOpenConnection(string dataProvider, string connectionString) 
{
try
{
DbConnection dbConnection = GetDbProviderFactory(dataProvider).CreateConnection();
dbConnection.ConnectionString = connectionString;
dbConnection.Open();
return dbConnection;
}
catch (Exception e)
{
throw new GetOpenConnectionException("", e);
}
}

我想要的是这样编写 GetOpenConnection() 方法:

public static DbConnection GetOpenConnection(string dataProvider, string connectionString) 
{
try
{
DbConnection dbConnection = GetDbProviderFactory(dataProvider).CreateConnection();
dbConnection.ConnectionString = connectionString;
dbConnection.Open();
return dbConnection;
}
catch (Exception e)
{
throw new GetOpenConnectionException(e);
}
}

这有意义吗?

最佳答案

   public GetOpenConnectionException(Exception innerException) : base("", innerException)
{
}

关于c# - 为什么在 C# Exception 类中没有带有 1 个 Exception 参数的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33379131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com