为错误的数组长度抛出异常

时间:2013-12-14 04:51:46

标签: c# arrays exception

我正在试图弄清楚如何根据数组的长度抛出异常,但同时,如果长度正确则能够返回一个值

例如:

 public Complex readInput()
 {
     Complex temp = 0;
     try
     {
          Console.Write("Enter input: ");
          string input = Console.ReadLine();

          String[] cplx= input.Split(' ');
          if (cplx.Length != x)
          {
               throw new IndexOutOfRangeException("INVALID INPUT ENTRY...");
          }

          temp = new Complex(Double.Parse(cplx[0]), Double.Parse(cplx[1]), ...);
     }
     catch (FormatException)
     {
          Console.WriteLine("INVALID INPUT ENTRY...");
     }
     return temp;
 } // end readInput

理想情况下,我只想要if(opr.Length ...)和IndexOutOfRangeException ..我认为我错误地使用了IndexOutOfRange。如果数组长度不等于x(有可能是#),有没有办法抛出异常,但如果是,则返回其中没有try / catch的内容?

编辑:计算出部分内容:https://stackoverflow.com/a/20580118/2872988

2 个答案:

答案 0 :(得分:0)

我认为你需要像这样扔掉

 public Complex readInput()
 {
     Complex temp = 0;
     try
     {
          Console.Write("Enter input: ");
          string input = Console.ReadLine();

          String[] cplx= input.Split(' ');
          if (cplx.Length >= x)
          {
               throw new IndexOutOfRangeException("INVALID INPUT ENTRY...");
          }

          temp = new Complex(Double.Parse(cplx[0]), Double.Parse(cplx[1]), ...);
     }
     catch (FormatException)
     {
          Console.WriteLine("INVALID INPUT ENTRY...");
     }
     return temp;
 } 

答案 1 :(得分:-1)

Hy,如果您使用自己的异常描述,代码会更好一些。尝试使用Exception(字符串描述)。代码看起来会好得多。请记住,例外情况是提醒程序员某些事情不能正常工作。

        Complex temp = null;
        try
        {
            Console.Write("Enter input: ");
            string input = Console.ReadLine();

            String[] cplx = input.Split(' ');
            if (cplx.Length != x)
                throw new Exception("INVALID INPUT ENTRY...");

            temp = new Complex(Double.Parse(cplx[0]), Double.Parse(cplx[1]));
        }
        catch (Exception)
        {
            Console.WriteLine("INVALID INPUT ENTRY...");
        }