0

我专门寻找控制台应用程序的解决方案,但是也欢迎表单应用程序的答案。您能帮我解决以下问题吗?

我的问题: 我想创建自己的异常,当用户键入其中一个时,它将捕获从 5 到 9 的任何数字。

注意:我知道我可以通过简单地使用IF ELSE语句来解决这个问题,但我特别希望将它作为异常捕获。

我不明白的是: 例如,一旦用户输入 5,我自己创建的异常就会捕获它 - 我不明白的是如何告诉我创建的异常类要捕获什么,要查找什么?我在哪里可以在我的 Exception 中输入这些数字并告诉我的 Exception 类这些数字是例外?

如果我不够清楚,请告诉我,我会尝试改写自己。

4

4 回答 4

2

您可能会从 Exception教程中受益。

听起来您正在尝试做三件事。

1 从文本输入字段中读取一个数字。

2 确定这是否是有效数字。

3 如果编号无效,则抛出异常。

//Read input
int i = -1;
i = int.TryParse(MyTextField.Text, out i);

if (i >= 5 && i <= 9) 
    throw new ArgumentOutOfRangeException("value", "Value cannot be  between 5 - 9.");
于 2013-07-15T13:39:02.943 回答
1

下面的代码显示了 CustomException 的基本示例

class Program
{
    static void Main(string[] args)
    {
        try
        {
            int x = Convert.ToInt32(Console.ReadLine());

            if (x >= 5 && x <= 9)
            {
                CustomException e = new CustomException("Please Eneter Another Number");
                throw e;
            }
        }

        catch (CustomException ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

public class CustomException : System.Exception
{
    public CustomException(string txt)
        : base(txt)
    {
    }
}
于 2013-07-15T13:39:55.793 回答
1

例外不只是发生。当您的代码抛出异常时,例如,如果您尝试除以 0 并得到 a DivideByZeroException- 这意味着某处的某些代码必须有类似throw new DivideByZeroException(); . (诚​​然,这是对问题的简化。)

所以为了抛出你想要的异常 - 你必须测试输入,如果它不好,那么抛出一个异常。

并假设您并不意味着您需要自定义异常(例如FiveToNineException)-您可以使用它:

if (i >= 5 && i <= 9)
{
    throw new Exception("5 to 9 Exception");
}

或者:

if (i >= 5 && i <= 9)
{
    Exception e = new Exception("5 to 9 Exception");
    e.Data.Add("The number ", i);
    throw e;
}

编辑

对于一个非常简单的自定义异常:

public class FiveToNineException : System.Exception
{
    public FiveToNineException() : base() { }
}

然后你可以拥有:

throw new FiveToNineException();

和:

try {/*Do something*/ }
catch (FiveToNineException ex) { }

有关更多信息,请参阅此链接以获取我的问题的答案。

于 2013-07-15T13:42:31.930 回答
1

如果我理解你是正确的,我认为你应该尝试类似:

if (yourNumber >= 5 && yourNumber <= 9)
{
    throw new YourException(..);
}

不过也看评论。您对异常的理解是不正确的。

于 2013-07-15T13:28:45.387 回答