Просто измените определение вашей переменной:
const x = this.props.form.getFieldValue('product_gender', x => console.log(x));
Python 3 представил цепочку исключений (как описано в PEP 3134 ). Это позволяет при возникновении исключения ссылаться на существующее исключение в качестве «причины»:
try:
frobnicate()
except KeyError as exc:
raise ValueError("Bad grape") from exc
Таким образом, перехваченное исключение становится частью (является «причиной») нового исключения и доступно любому коду, перехватывающему новое исключение.
С помощью этой функции атрибут __ причиной __
установлено. Встроенный обработчик исключений также знает, как сообщать «причину» и «контекст» исключения вместе с трассировкой.
В Python 2 , похоже, этот вариант использования имеет нет хорошего ответа (как описано Яном Бикингом и Недом Бэтчелдером ). Облом.
В Python 2 кажется, что этот вариант использования не имеет хорошего ответа (как описано Ианом Бикингом и Недом Батчелдером ). Облом.
В Python 2 кажется, что этот вариант использования не имеет хорошего ответа (как описано Ианом Бикингом и Недом Батчелдером ). Облом.
Можно использовать sys.exc_info (), чтобы получить traceback и повысить новое исключение со сказанным traceback (как PEP упоминает). Если Вы хотите сохранить старый тип и сообщение, можно сделать так на исключении, но это только полезно, если безотносительно выгод исключение ищет его.
Например,
import sys
def failure():
try: 1/0
except ZeroDivisionError, e:
type, value, traceback = sys.exc_info()
raise ValueError, ("You did something wrong!", type, value), traceback
Конечно, это действительно не настолько полезно. Если бы это было, то нам не был бы нужен тот PEP. Я не рекомендовал бы делать его.
Вы могли создать свой собственный тип исключительной ситуации, который расширяется, какой бы ни исключение Вы поймали.
class NewException(CaughtException):
def __init__(self, caught):
self.caught = caught
try:
...
except CaughtException as e:
...
raise NewException(e)
Но большую часть времени, я думаю, что было бы более просто поймать исключение, обработать его, и также raise
исходное исключение (и сохраняют traceback), или raise NewException()
. Если бы я называл Ваш код, и я получил одно из Ваших пользовательских исключений, то я ожидал бы, что Ваш код уже обработал любое исключение, которое необходимо было поймать. Таким образом я не должен получать доступ к нему сам.
Править: Я нашел этот анализ способов выдать Ваше собственное исключение и сохранить исходное исключение. Никакие симпатичные решения.