我想有一个接收一种异常的方法(即传递的参数必须是一个实现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)
我不想传递异常的实例,而是按异常类型跟踪它.
听起来你需要一个通用方法
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)