Exception.Cannot打印异常字符串的问题,因为Exception.ToString()失败

c#

我目前正在练习创建我的 Exception 类。这段代码的想法是让用户输入密码。如果它的代码少于 5 个字符,程序将抛出异​​常。我希望我的程序抛出一个带有文本的异常(“密码太小”)并且我的异常类的对象使用 ToString 方法(在哪里会写“密码长度异常”)。让我困惑的是为什么我收到消息未处理的异常.密码长度异常。无法打印异常字符串,因为 Exception.ToString () 失败。你可以在照片中看到这个

这是我的代码。

 public class My_Exception : Exception
    {
        
        public My_Exception(string message) : base(message)
        {
            Console.WriteLine(message);
        }
        
        public override string ToString()
        {
            throw new My_Exception(" Password Length exception ");
        }


    }



    class Program
    {
          
      static void Main(string[] args)
        
        {
           try
            {
                Console.WriteLine("Enter your password");
                string Password = Console.ReadLine();
                if (Password.Length < 5)
                {
                   throw new My_Exception(" Password is too small ");
                }
            }

            catch(My_Exception ex)
            {

             Console.WriteLine(ex.ToString());
            }

        }
    }

回答

删除覆盖 .ToString().

public class My_Exception : Exception
{        
    public My_Exception(string message) : base(message)
    {
        Console.WriteLine(message);
    }       
}

message将由碱所示Exception.ToString()。你不应该从另一个异常中抛出异常。

事实上,你不应该Console.WriteLine()Exception. 这是try/catch块应该就是了异常任何方式进行打印。

public class My_Exception : Exception
{        
    public My_Exception(string message) : base(message)
    {
    }       
}

请参阅https://ideone.com/FchSGc 上的运行示例


以上是Exception.Cannot打印异常字符串的问题,因为Exception.ToString()失败的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>