новичок, создающий исключение

#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')
 

Спасибо всем вам. Я надеюсь узнать больше и сменить карьеру.