Найти тему
Программы от меня

Аргументы командной строки в C#. Часть 2. Перечитываем массив args. Без ошибок.

Оглавление

Здравствуйте, дорогие друзья, любители программирования (а также профессионалы программирования)! Сегодня мы продолжим работать с аргументами командной строки, сделаем нашей программе хелпер и научим нашу программу не ошибаться. Причем никогда не ошибаться! Заинтриговал я вас? Поехали!

Нумерация параметров и вывод параметров из нескольких слов

Итак, мы остановились на выводе всех переданных программе параметров.

Давайте добавим в код нумерацию выводимых параметров. Можно это сделать конечно при помощи оператора for, но мы просто добавим счетчик

-2

Результат будет вот таким:

-3

То есть теперь мы видим, что каждый переданный аргумент при выводе имеет свой порядковый номер, начинающийся с нуля. Парадокс, но именно так нумеруются элементы массива args (и нумерация также начинается с нуля).

То есть, если мы сейчас закомментируем цикл foreach и выведем только первый элемент, то получится вот что:

-4

То есть выведен второй переданный нами параметр dsfg, имеющий индекс 1. Всё отлично! Мы можем передавать нашей программе из командной строки параметры, разделенные пробелом, и программа будет их на основании данных пробелов разделять и считать разными параметрами. Стоп! А если нам надо передать два или более слов, разделенных пробелом, как один параметр, к примеру запустить команду arg.exe -w Здравствуйте, товарищи! -s прощайте товарищи ... Что нам в этом случае делать?

Элементарно, Ватсон! Заключаем нужные нам выражения в кавычки. Команда будет выглядеть следующим образом

arg.exe -w "Здравствуйте, товарищи!" -s "прощайте товарищи"

Удаляем из нашей программы вывод отдельного элемента, раскомментируем цикл, компилируем снова нашу программу и запускаем нашу команду:

-5

Вуаля, как говорили фокусники. Все наши параметры из нескольких слов прекрасно вывелись.



Помощь пользователю

Вывод строки "Нет аргументов" при запуске программы без параметров не очень комильфо для программы. Обычно в таких случаях выводится тоже, что и при вводе (в том или ином виде) команды help, т.е. страница помощи, какие команды и параметры куда вводить и как правильно запускать программу, чтобы она приносила нужный результат и давала нужный артефакт. Сделаем это и мы. Нам нужно вывести в несколько строк вот такую вещь.


Программа arg версии 1.0.0.1
При передаче параметров - выводит параметры в столбик
При запуске без параметров выводит данную страницу

Пока так. Если будем писать для программы другой полезный функционал, то мы соответственно должны будем прописать это на страницу помощи.

Начинаем программировать. Добавляем строковую переменную help:

string help = @"

Программа arg версии 1.0.0.1

При передаче параметров - выводит параметры в столбик
При запуске без параметров выводит данную страницу

";

а в конце после else пишем:

Console.WriteLine(help);

-6

компилируем и в результате получаем(кстати arg.exe можно в командной строке запускать без расширения, просто arg) :

-7

Обработка ошибок

Теперь об ошибках. Зачем программе собственно не ошибаться? Без аргументов запускается нормально, с аргументами вроде тоже. Не спешите с выводами. Работа программы одним перечислением аргументов, не ограничивается. Перепишем основной модуль программы вот так:

-8

и при выводе с аргументом 0 (нуль), получим следующее:

-9

Программа выдала ошибку, ибо , делить на нуль никому нельзя, даже таким суперкрутым программистам, как мы с вами.
Но для пользователя такие "стримы ошибок" - это недоработка программы, поэтому лучше сделать, чтобы при ошибках выводилась справка, как работать с программой и сообщение на русском языке, а код ошибки выводился в специальный файл, который потом уже посмотрит специалист (он называется лог).
Для наших целей воспользуемся универсальным обработчиком ошибок
try...catch . Код будет выглядеть следующим образом:

-10

то есть в блоке try идет выполнение правильного кода, в блоке catch если будет ошибка, будет выведено, что ошибка выполнения и help

Вот так это всё будет выглядеть:

-11

То есть всё красиво, и с ошибкой, и с правильным аргументом

Подробнее об ошибках, их определении и методах их обработки мы сделаем отдельную статью или даже отдельный цикл статей. А по данной теме на сегодня всё, в следующей статье по данной тематике мы с вами перейдем к практическому воплощению работы с параметрами и напишем "полезняшку" - программу, которая не просто пишется ради кода, а делает кое-что полезное для пользователя. Подписывайтесь на канал и ждем продолжения