【问题标题】:How do I get this custom exception to work correctly?如何让这个自定义异常正常工作?
【发布时间】:2021-08-05 21:43:59
【问题描述】:

我创建了一个数字游戏,玩家在其中猜测 1 到 100 之间的随机数。我正在为数字 69(不要问 XD)创建一个自定义异常,以便在猜到 69 时显示异常消息.这是我第一次创建自定义异常,我想我几乎做对了,但我不确定。

[Serializable]   
    public class SixtyNineException : Exception
    {
        private int sixtyNine;
        public int NotSixtyNine { get { return sixtyNine; } }
        public SixtyNineException(int sxtnin) : base(String.Format("Do you want to be a joke your whole life? *shakes head*"))
        {
            sixtyNine = sxtnin;
        }

我不知道如何让异常实际读取数字 69。我在下面设置了所有其他内容,并了解如何使用 try catch 块来测试和使用异常。感谢您的帮助!

【问题讨论】:

    标签: c# exception


    【解决方案1】:

    目前,此异常期望调用代码为其提供值69(或任何数值,真的)。然后它不会对该值做任何事情。

    既然你只打算抛出这个特定值的异常,你为什么需要一个数字属性呢?只需使用您的自定义消息:

    public class SixtyNineException : Exception
    {
        public SixtyNineException() :
          base("Do you want to be a joke your whole life? *shakes head*") { }
    }
    

    并在需要时扔掉它:

    throw new SixtyNineException();
    

    顺便说一句,您在此处描述的功能可能不应该首先成为例外。异常是针对错误和处理不应该发生的意外事情。提供特定输出以响应特定输入并不是意外或例外。输入处理逻辑中的简单 if 语句就可以解决问题。

    【讨论】:

    • 您可能是对的,我将其更改为 if 语句。我只是想学习如何创建异常。 :^) 请原谅我对这个概念很陌生,但我不明白 throw 是如何工作的?我在猜数字游戏中使用了 try catch 块。如果我想在 catch 块中使用这个异常,我该如何使用它来只标记数字 69?非常感谢你的帮助;我真的很感激!
    • @labmate:try 包装了可能引发异常的代码。因此,在您的 try 中,您将有一个 if 语句检查输入的值 69 并引发异常,然后在您的 catch 中,您将通过向用户。仅仅描述它听起来过于复杂,因为在这种情况下它是。检查值 69 的相同 if 语句可以只向用户显示消息,不需要例外。
    • 谢谢,大卫,我很感激你的解释。我将尝试过于复杂的方法,以便了解它是如何工作的,但最终会选择更简单的 if 语句。干杯。
    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 2020-07-09
    • 2023-03-15
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多