Другим вариантом является извлечение значений из списка argv с помощью try
:
lira_cbt = sys.argv[1]
try:
eur_hedge = sys.argv[2]
except IndexError:
eur_hedge = None
if eur_hedge == None:
# Do X
else:
# Do Y
Вы также можете посмотреть getopt для более гибкого анализатора аргументы командной строки.
В целом исключения включали, необходимо рассматривать дополнительный метод, как будто это был нормальный статический метод. В этом случае необходимо бросить ArgumentNullException.
Бросок NullReferenceException вот является плохой идеей по нескольким причинам
Видят , Когда может Вы ловить StackOverflowException (сообщение, я сделал на этом предмете).
С точки зрения пользователя, взглядов метода и действий как метод экземпляра, поэтому если бы я был ими, я ожидал бы видеть NullReferenceException.
Однако я предложил бы бросить или один или другой явно в коде, вместо того, чтобы, просто "оказаться", бросить тот как в Ваш первый пример.
Кроме всех других ответов (которые хороши) я думаю, что это стоит посмотреть на то, что Microsoft делает ради непротиворечивости... и дополнительных методов в Счетном весь бросок ArgumentNullException, насколько я вижу.
Так как дополнительные методы могут использоваться в C# 2.0, и их можно назвать точно так же, как статические методы (Вы не должны использовать их в качестве дополнительных методов), необходимо использовать ArgumentNullException.
Просто, потому что они взгляд как методы на типе не означают, что они, или всегда называются как один.
ArgumentNullException. Существует никакой требование для вызова дополнительных методов, как будто они были методами экземпляра. Можно назвать их, как будто они были нормальными методами. NullReferenceException был бы абсолютно неправильным в этом случае.