C# 在C语言中,当运行时类型不匹配时,应该抛出什么样的异常#
本质上,我正在创建一个使用MONO.CECIL和C#的小IL注入DLL,主要是作为我自己的学习练习,也是为了我自己未来的爱好者使用 我对异常(或C#)不是特别熟练,并且不确定在运行时类型不匹配时抛出适当的异常是为了什么 例如:我有一个方法,它在目标DLL中的给定点注入方法调用。该方法将一个集合(参数)作为参数,以表示作为参数传递给新注入的方法调用的变量 在注入之前,我检查集合的每个成员(参数)和来自我正在注入其调用的方法的集合之间的类型奇偶校验 对于不匹配,我想抛出一个异常。但我真的找不到合适的。我更愿意在可能的情况下使用现有的异常,而不是创建自己的异常 代码如下:C# 在C语言中,当运行时类型不匹配时,应该抛出什么样的异常#,c#,exception,mono.cecil,C#,Exception,Mono.cecil,本质上,我正在创建一个使用MONO.CECIL和C#的小IL注入DLL,主要是作为我自己的学习练习,也是为了我自己未来的爱好者使用 我对异常(或C#)不是特别熟练,并且不确定在运行时类型不匹配时抛出适当的异常是为了什么 例如:我有一个方法,它在目标DLL中的给定点注入方法调用。该方法将一个集合(参数)作为参数,以表示作为参数传递给新注入的方法调用的变量 在注入之前,我检查集合的每个成员(参数)和来自我正在注入其调用的方法的集合之间的类型奇偶校验 对于不匹配,我想抛出一个异常。但我真的找不到合适的
private static bool ParameterParity(Collection<ParameterDefinition> p, Collection<VariableDefinition> v)
{
if (p.Count != v.Count)
{
return (false);
}
else
{
int index = 0;
foreach (ParameterDefinition parameter in p)
{
if (parameter.ParameterType.MetadataType != v[index].VariableType.MetadataType)
{
return (false);
}
index++;
}
}
return (true);
}
我暂时使用了NOT IMPLEMENTED异常,但希望使用更合适的异常。如能就适当的例外情况提出建议,将不胜感激
提前谢谢。这可能最终是一个
例外情况?某个地方的一个方法被赋予了一些参数,其中一个或多个参数出现了问题。如果该方法不被捕获,则使用现有的异常,并且用户需要自己解决它。但是,如果它将被捕获,那么您必须确保不会意外捕获由其他代码引发的代码。因此你创造了你自己的。
if (ParameterParity(source.Parameters, parameters) == false)
{
throw new NotImplementedException($"{Helper.AddParenthesis(nameof(PreInject), Helper.ParenthesisE.Square)}" +
$" : Parameter mismatch in TYPE or NUMBER" +
$". Functionality not supported.");
}