如何将一种异常作为参数传递?

gny*_*his 7 c#

我想有一个接收一种异常的方法(即传递的参数必须是一个实现System.Exception的类).

这样做的正确方法是什么?

以下不是我想要的:

public void SetException(Exception e)
Run Code Online (Sandbox Code Playgroud)

......需要一个例外实例.我想传递一种类型的异常InvalidProgramException


编辑:为了进一步解释我想要做什么,我希望能够跟踪我之前看过每种类型的异常的次数.所以我希望能够做到这样的事情:

Dictionary<ExceptionTypeThing, int> ExceptionCounts;

public void ExceptionSeen(ExceptionTypeThing e)
{
    // Assume initialization
    ExceptionCounts[e]++;
}

ExceptionSeen(InvalidProgramException);
Run Code Online (Sandbox Code Playgroud)

我不想传递异常的实例,而是按异常类型跟踪它.

Sri*_*vel 2

听起来你需要一个通用方法

public void SetException<TException>() where TException : Exception
{
    ExceptionCounts[typeof(TException)]++;
}
Run Code Online (Sandbox Code Playgroud)

你可以将其称为

SetException<InvalidProgramException>();
Run Code Online (Sandbox Code Playgroud)

编辑:

Dictionary<Type, int> ExceptionCounts;
public void ExceptionSeen(Type type)
{
    ExceptionCounts[type]++;
}
Run Code Online (Sandbox Code Playgroud)

称其为

ExceptionSeen(typeof(MyException));
Run Code Online (Sandbox Code Playgroud)

或者如果您已经有异常实例

ExceptionSeen(ex.GetType());
Run Code Online (Sandbox Code Playgroud)