Как я могу поймать только определенный тип ValueError в Python? - PullRequest
0 голосов
/ 18 января 2019

Я обрабатываю данные, и для некоторых примеров данные проблематичны. Питон поднимает

ValueError: Остатки не являются конечными в начальной точке.

Есть ли возможность отлавливать ошибки значения только сообщением "Residuals are not finite in the initial point."? Я попробовал:

try:
    [code that could raise the error]
except Exception as e:
    if e=='ValueError(\'Residuals are not finite in the initial point.\')':
        [do stuff I want when the Residuals are not finite]
    else:
        raise e

Но это все равно вызывало ошибку все время. Есть ли способ достичь того, что я себе представлял?

Спасибо

Ответы [ 2 ]

0 голосов
/ 18 января 2019
try:
    [code that could raise the error]
except ValueError as e:
    if len(e.args) > 0 and e.args[0] == 'Residuals are not finite in the initial point.':
        [do stuff I want when the Residuals are not finite]
    else:
        raise e

Возможно, вам придется проверить, содержит ли e.args[0] именно эту строку (спровоцировать ошибку и вывести e.args[0])

См. Также документация о BaseException.args

0 голосов
/ 18 января 2019

Вы можете поймать исключение ValueError следующим образом:

try:

    #[code that could raise the error]

except ValueError as e:

    print("Residuals are not finite in the initial point. ...")
    #[do stuff I want when the Residuals are not finite]
...