Как мне добавить обработку исключений в этот цикл while?

Кажется, я не могу уложить это в голове.

Я пробовал... Пробовал: кроме: но безрезультатно.

В частности, это селектор файлов. Когда пользователь не выбирает файл или выбирает неправильный тип файла, я хочу оставить программу открытой, сообщить им об ошибке и позволить им выбрать другой файл, а не закрывать программу.

while True:     
        
        event, values = window.read()

        if event in (sg.WIN_CLOSED, 'Cancel'):
                 break
                
        if event == '  Ok  ':
                 # If OK, then need to add the filename to the list of files and also set as the last used filename
                sg.user_settings_set_entry('-filenames-', list(set(sg.user_settings_get_entry('-filenames-', []) + [values['-FILENAME-'], ])))
                sg.user_settings_set_entry('-last filename-', values['-FILENAME-'])
                lastFile=values['-FILENAME-']
                break
        
        elif event == 'Clear History':
            sg.user_settings_set_entry('-filenames-', [])
            sg.user_settings_set_entry('-last filename-', '')
            window['-FILENAME-'].update(values=[], value='')
                      
window.close()
0
dan.rad 1 Окт 2022 в 21:24

1 ответ

Вы должны иметь возможность использовать try/except в цикле while и заставить его выйти или заглушить исключение, как вам хотелось бы. См. этот образец ниже:

In [111]: while True:
     ...:     print('Hello')
     ...:     try:
     ...:         raise Exception()
     ...:     except Exception as e:
     ...:         print('Exception raised')
     ...:         raise e
     ...: 
Hello
Exception raised
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-111-c0ec85d9988a> in <module>
      5     except Exception as e:
      6         print('Exception raised')
----> 7         raise e
      8 

<ipython-input-111-c0ec85d9988a> in <module>
      2     print('Hello')
      3     try:
----> 4         raise Exception()
      5     except Exception as e:
      6         print('Exception raised')

Exception: 

Надеюсь это поможет!

0
genhernandez 1 Окт 2022 в 21:46