扩展方法中的异常处理
本文关键字:异常处理 方法 扩展 | 更新日期: 2023-09-27 17:56:12
在
扩展方法中处理异常的最佳方法是什么?这包括从方法生成的异常,以及由在 null 对象上调用扩展方法引起的 null 异常。
在适当的业务功能中调用扩展方法之前处理是否好,或者方法应该注意异常。
只是为了给出这里的想法是代码示例
class ABC
{
private readonly string name;
public ABC(string name)
{
this.name = name;
}
public string Name { get { return this.name; } }
}
internal static class ABCExtension
{
internal static void GetName(this ABC abc)
{
Console.WriteLine(abc.Name);
}
}
class Program
{
static void Main(string[] args)
{
ABC abc = new ABC("baam");
abc = null;
abc.GetName();
Console.Read();
}
}
这将生成空异常,因为 abc 对象为空。
在此处添加详细信息以了解更多信息。我在阶级的责任之间感到困惑
我想知道谁负责处理异常。提供方法的扩展类或使用它的类?
如果需要任何进一步的细节,请告诉我。
传递给
扩展方法的参数类似于常规方法的参数。这包括扩展方法的第一个参数(在类型名称之前带有this
)。如果方法对输入参数强制实施任何规则,则应检查这些规则。如果存在应由调用方法处理的条件,则让异常引发到调用方法。
顺便说一下,始终检查空值,不要让NullReferenceException
发生。 NullReferenceException
意味着您的代码中存在错误。
通常,在像 GetName() 这样的方法中,你会检查参数,如果为 null,则抛出一个NullArgumentException
。 但是,如果 GetName() 是成员函数,则abc.GetName()
会导致NullReferenceException
。 因此,在扩展方法的情况下,它应该模拟成员函数,并抛出NullReferenceException
与
任何其他方法一样,如何处理扩展方法中的异常没有区别。确保捕获外部异常(使用 try/catch),并验证方法中的参数(使用 ArgumentException)。