System.IndexOutOfRangeException: индекс вышел за пределы

c#

6588 просмотра

2 ответа

123 Репутация автора

У меня есть программа на C #, которая прекрасно работает, когда я запускаю ее в Visual Studio.

Но когда я запускаю файл, я получаю сообщение об ошибке main.

Ошибка:

Необработанное исключение: System.IndexOutOfRangeException: индекс вышел за пределы массива

Мое главное: ошибка есть у int tala = convert.toInt32 ...

namespace MultiplicationTable
{
    class Program
    {
        static void Main(string[] args)
        {
            int tala = Convert.ToInt32(args[0]);
            MultiplicationTable test = new MultiplicationTable(tala);
            Console.ReadLine();
        }
    }
}

Есть идеи?

Автор: user3265963 Источник Размещён: 14.02.2014 03:35

Ответы (2)


6 плюса

23601 Репутация автора

Решение

Проблема: Когда вы запускаете ее из Visual Studio, вы предоставляете аргументы, но когда вы запускаете программу напрямую, дважды щелкнув по ней, вы не можете предоставить аргументы, так как она будет вызвана напрямую.

Решение: вам нужно правильно указать аргументы командной строки, выполните следующие шаги, чтобы запустить вашу программу из командной строки

Шаг 1: перейти к командной строке

Шаг 2: перейти к вашей программе exe путь к файлу

Шаг 3: теперь запустите программу, предоставив аргументы командной строки, как показано ниже:

c:\myprogrampath\program.exe 12

Попробуйте этот код, чтобы избежать исключений:

if(args.Length>0)
{
    int tala = Convert.ToInt32(args[0]);
    MultiplicationTable test = new MultiplicationTable(tala);
    Console.ReadLine();
}
else
{
    Console.WriteLine("No Command Line Arguments - Quiting");
}
Автор: Sudhakar Tillapudi Размещён: 14.02.2014 03:36

-1 плюса

0 Репутация автора

Да,

Как сказал ранее создатель, либо вы должны передать аргументы в вашу программу, либо вы должны проверить, не является ли args ненулевым с помощью оператора if, и «перехватить» эту ошибку.

if(args) {
//here your code
}

Кроме того, вы можете попробовать оператор try - catch:

try {
   //here you read the arguments and pass to a variable
}
catch(System.IndexOutOfRangeException) {
     //other codepart
}
Автор: user2924839 Размещён: 14.02.2014 03:39
Вопросы из категории :
32x32