#python #exception
Вопрос:
Это моя первая попытка кодирования чего-либо, кроме управления ЧПУ Fanuc. Я не знаю, почему, но этот код возвращает оба исключения, и если я удалю исключение raise из else: он не возвращает ни одно исключение. Чего мне не хватает?
cut_type=[input("Enter cut type Straight(S) or Arc(A)" )]# Add Taper later
try:
if 'S' in cut_type:
valid_type=['Y']
elif 's' in cut_type:
valid_type=['Y']
elif 'A' in cut_type:
valid_type=['Y']
elif 'a' in cut_type:
valid_type=['Y']
else:
valid_type=['N']
raise Exception('Cut Type not Valid')
except:
print('NOT VALID TYPE')
raise Exception('Cut Type not Valid')
print(valid_type)
Если я выполню приведенный выше код, я получу следующее
Enter cut type Straight(S) or Arc(A)q
NOT VALID TYPE
Traceback (most recent call last):
File "Chip Break testing.py", line 21, in <module>
raise Exception('Cut Type not Valid')
Exception: Cut Type not Valid
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "Chip Break testing.py", line 24, in <module>
raise Exception('Cut Type not Valid')
Exception: Cut Type not Valid
И если я запускаю его с исключением повышения, удаленным из любой из позиций, я не получаю никаких исключений. Я знаю, что упускаю что-то простое, но я этого не вижу.
Комментарии:
1. В
else
части,Exception
вызываетсяraise Exception('Cut Type not Valid')
, которая улавливается голымexcept:
, где возникает другое исключение2. Каково ваше предполагаемое поведение? Для меня это звучит как правильное поведение этой программы. Что вы хотите, чтобы он делал?
3. Да, это было бы причиной обоих исключений. Если вы удалите блок else, у вас будет ошибка
print(valid_type)
, так как он никогда не был назначен. Какие входные данные вы используете и каков ваш ожидаемый результат?4. Если тип недопустим, зачем вы
valid_type
что-то добавляете ?5. Вы собираетесь поймать ошибку, которую вы сами вызываете в
else
блоке внутриtry
? Трудно понять, что вы пытаетесь здесь сделать
Ответ №1:
Это то, что я сделал после предложений и повторного просмотра моего кода, чтобы заставить его работать.
cut_type=[input("Enter cut type Straight(S) or Arc(A)" )]# Add Taper later
if 'S' in cut_type:
pass
elif 's' in cut_type:
pass
elif 'A' in cut_type:
pass
elif 'a' in cut_type:
pass
else:
raise Exception('Cut Type not Valid')
Спасибо всем вам. Я надеюсь узнать больше и сменить карьеру.