C# 程序未引发ArgumentOutOfRange异常

C# 程序未引发ArgumentOutOfRange异常,c#,try-catch,expectations,C#,Try Catch,Expectations,我有一个简单的程序,它从用户那里获取一个数字,并返回数组中该位置/索引处的数字。但是,如果给定的数字不在索引范围内,则会引发异常。 这是我的密码: int[] arr = { 1, 2, 3, 4, 5, 6 }; Console.WriteLine("input int"); int k = int.Parse(Console.ReadLine()); Console.WriteLine("befo

我有一个简单的程序,它从用户那里获取一个数字,并返回数组中该位置/索引处的数字。但是,如果给定的数字不在索引范围内,则会引发异常。 这是我的密码:

        int[] arr = { 1, 2, 3, 4, 5, 6 };    
            Console.WriteLine("input int");
            int k = int.Parse(Console.ReadLine());
            Console.WriteLine("before");
            try
            {
                double n = 5 / k;
                Console.WriteLine(n);
            int l=arr[k];
            Console.WriteLine(l);
            }
            catch (DivideByZeroException)
            {

                throw new ArgumentException("you cant divid by 0!");

            }
        catch (ArgumentOutOfRangeException)
        {

            throw new ArgumentException("please give a number between 0-5");

        }
        catch (Exception)
        {

            throw new ArgumentException("something went worng, please try again");

        }
        finally
            {
                Console.WriteLine("after");
                Console.WriteLine("process compited!");
            }
但是,问题是,如果输入的数字是7(不在范围内),则会显示ArgumentOutOfRangeException异常。
如果我希望异常为“请给出一个介于0-5之间的数字”,我该怎么办?(使用try-catch方法)

和之间存在差异。
您必须捕获IndexOutOfRangeException。

和之间存在差异。
您必须捕获IndexOutOfRangeException。

不要使用异常来引导应用程序逻辑流。如果索引对于阵列来说不是太大,最好主动检查。此索引编号是外部输入的,因此您有权在其上设置任何您认为合适的防护装置


除此之外,@Ciubotariu Florin是正确的。

不要使用异常来指导应用程序逻辑流。如果索引对于阵列来说不是太大,最好主动检查。此索引编号是外部输入的,因此您有权在其上设置任何您认为合适的防护装置


除此之外,@Ciubotariu Florin是对的。

你能解释一下你的意思吗?如果你需要的是在索引超出范围时得到错误消息“请给出一个介于0-5之间的数字”,那么只需在
int l=arr[k]之前写一个If语句如下:
如果(k<0 | | k>5)抛出新的ArgumentException(“请给出一个介于0-5之间的数字”)而不是使用try catch块。这样你就可以更明确地表达你的意图。是的,我知道,我只是在尝试,因为这对我来说是一个新课题。你能解释一下你的意思吗?如果你需要的是在索引超出范围时得到错误消息“请给出一个介于0-5之间的数字”,那么就在
int l=arr[k]之前写一个If语句如下:
如果(k<0 | | k>5)抛出新的ArgumentException(“请给出一个介于0-5之间的数字”)而不是使用try catch块。是的,我知道,我只是在尝试,因为这对我来说是一个新课题。