Как завершить процесс, обработав ошибку? - PullRequest
0 голосов
/ 02 июля 2018

-Это вопрос Python в общем.

У меня очень часто возникают ошибки топологии, они очень маленькие, и я хотел бы перейти к пересечению, даже если они есть. Можно ли сделать исключение для этого конкретного:

TopologyException: found non-noded intersection between LINESTRING (229971 4.39944e+06, 229971 4.39944e+06) and LINESTRING (229971 4.39944e+06, 229971 4.39944e+06) at 229971.08857010119 4399438.0928708706 и заставить его завершить процесс? Я использую Python и Geopandas.

Также иногда на перекрестке написано:

 TopologicalError: This operation could not be performed. Reason: unknown

возможно ли для такой строки: inte_s=gpd.overlay(data2,asttom,how='intersection') что вызывает эту ошибку, чтобы создать исключение и заставить его выполнить вычисление, будучи равнодушным к появившейся ошибке? Какой код будет делать это в этой строке, где пересечение сделано?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Одним из способов обработки ошибок в Python является использование try и кроме оператора .

Вот пример кода, который я часто использую при тестировании. Вы можете поместить операцию, которая может завершиться с ошибкой, в часть try блока, и даже если она выдаст исключение, весь ваш сценарий не будет нарушен.

try:
    #operation that may fail
except Exception as e:
    print('something went wrong: ' + e)
    # what you want to do if the operation does fail

Приведенный выше код является общей формой для оператора try / исключением. Если вы хотите поймать специфическую ошибку, вы ищете что-то вроде этого ТА ответа.

0 голосов
/ 02 июля 2018

Да, вы можете пропустить или обработать любое исключение в Python, используя try/except блоки. В вашем случае это будет:

try:
    inte_s=gpd.overlay(data2,asttom,how='intersection')
except (TopologicalError, TopologyException):
    #skipping error here
    pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...