Как написать более чистую версию блока «try catch» на Python?

#python #try-catch

#python #попробуйте-поймайте

Вопрос:

[После нескольких лет программирования я понял, что мой вопрос вообще не имеет смысла 🙂 В любом случае спасибо за вашу помощь!]

У меня есть этот код:

 def try_(things):
    try:
        return things
    except:
        return None
  

Но я хочу, чтобы этот вызов привел к следующему результату:

 try_([1,2,3][2]) -> 3

try_([1,2,3][4]) -> Error  (But I want it to return None)
  

Комментарии:

1. Это очень неясно. Возврат сам по себе никогда не может вызвать ошибку, поэтому я не понимаю, что вы пытаетесь поймать. Пожалуйста, покажите ваш фактический код.

2. Если call try_([1,2,3][4]) , то исключение происходит до вызова вашей try_ функции. Его невозможно try_ поймать.

Ответ №1:

Вам нужно передать индекс в качестве параметра:

 def try_(things, index):
    try:
        return things[index]
    except:
        return None
  

Назовите это так:

 try_([1,2,3], 2) -> 3

try_([1,2,3], 4) -> None