У меня следующая проблема: я указал метод для данного класса, который обрабатывает две разные ошибки с одним и тем же определяемым пользователем исключением (см. Метод ниже).
def get_route(self, source, target):
try:
n = nx.shortest_path(self.graph, source, target)
return n
except (nx.NetworkXNoPath, nx.NodeNotFound):
raise NoSuchFlight
Итак, теперь я хочу далее определить функцию, которая вызывает вышеуказанный метод. Я заметил, что код работает, когда я повторяю оператор try-exc, который я не совсем понимаю (см. Ниже).
def get_airlines_per_route(airlines_dict, source, target, max_intermediate_stops):
lst = []
for airline in airlines_dict.values():
try:
path = airline.get_route(source, target)
if (len(path) - 2) <= max_intermediate_stops:
lst.append(airline)
except:
NoSuchFlight
return lst
Однако я понятия не имею, почему это работает. В любом случае мой код правильный? И более того, как бы вы, ребята, решили эту проблему?
Спасибо за любой совет.
Обновление:
Определяемое пользователем исключение:
class NoSuchFlight(Exception):
pass
Предполагаемый путь:
def get_airlines_per_route(airlines_dict, source, target, max_intermediate_stops):
lst = []
for airline in airlines_dict.values():
path = airline.get_route(source, target)
if (len(path) - 2) <= max_intermediate_stops:
lst.append(airline)
return lst