Пользовательское исключение не обнаружено в приложении Python Flask - PullRequest
0 голосов
/ 31 января 2020

У меня есть Flask приложение, вызывающее разные модули. Одна из них в конечном итоге вызывает исключение NoPrice, но except NoPrice не перехватывает его как NoPrice, но except Exception перехватывает его ...

class NoPrice(Exception):
    pass

где-то в модуле

raise NoPrice('error')

в моем flask приложении

try:
    raise NoPrice('main')
except NoPrice as e:
    print('main')
except Exception as e:
    print('main2')

try:
    resp = alicia.create_predictions(select)
except NoPrice as e:
    print('main3')
except Exception as e:
    print('main4')
    print(repr(e))
    print(e)
    print(traceback.format_exc())

Вывод этого

main
main4
NoPrice('No price found for material_reference 0148054b-e681-4fb6-9722-946f3cfa8529 the weight 1.7471266917293233', 'occurred at index 0')
('No price found for material_reference 0148054b-e681-4fb6-9722-946f3cfa8529 the weight 1.7471266917293233', 'occurred at index 0')
Traceback (most recent call last):
  File "c/main.py", line 71, in create_predictions_api
    resp = alicia.create_predictions(select)
  File "/absolutepath/app/alicia.py", line 703, in create_predictions
    self.set_machines_and_format()
  File "/absolutepath/app/alicia.py", line 574, in set_machines_and_format
    x["is_screenprinting_option"]), axis = 1)
  File "/absolutepath/venv/lib/python3.7/site-packages/pandas/core/frame.py", line 6913, in apply
    return op.get_result()
  File "/absolutepath/venv/lib/python3.7/site-packages/pandas/core/apply.py", line 186, in get_result
    return self.apply_standard()
  File "/absolutepath/venv/lib/python3.7/site-packages/pandas/core/apply.py", line 292, in apply_standard
    self.apply_series_generator()
  File "/absolutepath/venv/lib/python3.7/site-packages/pandas/core/apply.py", line 321, in apply_series_generator
    results[i] = self.f(v)
  File "/absolutepath/app/alicia.py", line 574, in <lambda>
    x["is_screenprinting_option"]), axis = 1)
  File "/absolutepath/app/alicia.py", line 359, in predict_price_relying_on_format
    output = Jerome(self.product, self.hipe_client_config).run(self.quote_input)
  File "/absolutepath/app/jerome/jerome.py", line 235, in run
    pliant = pliant_obj.price(quote_input, self.material_reference)
  File "/absolutepath/app/jerome/options_construction/pliant.py", line 66, in price
    quote_input['matter_margin_percentage'])
  File "/absolutepath/app/jerome/options_construction/pliant.py", line 52, in pliant
    raise NoPrice(f"No price found for material_reference {material_reference.id} the weight {x1}")
exceptions.NoPrice: ('No price found for material_reference 0148054b-e681-4fb6-9722-946f3cfa8529 the weight 1.7471266917293233', 'occurred at index 0')

Почему исключая NoPrice не перехватывает мое исключение?

Shouldn ' выход будет

main
main3

Моя цель в конечном итоге обработать только мое исключение NoPrice

1 Ответ

0 голосов
/ 31 января 2020

my_function не должна вызывать исключение NoPrice, и поэтому оно не попадает в раздел 'main 3'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...