扩展方法中的异常处理

本文关键字:异常处理 方法 扩展 | 更新日期: 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)。