함수 a() 및 b()가 예외를 throw 할 수 있습니다. 코드 :적절한 방법 UnboundLocalError : 예외가 발생했을 때 할당 전에 참조 된 로컬 변수 ''?
def foo():
try:
x = a('test')
b(x, 'test2')
except Exception as ex:
raise Exception('Message error: ' + str(x) + " " + str(ex)) #here could be UnboundLocalError: Local variable 'x' referenced before assignment
내 솔루션은 다음과 같습니다
def foo():
try:
x = a('test')
try:
b(x, 'test2')
except Exception as ex:
raise Exception('Message error: ' + str(x) + " " + str(ex))
except Exception as ex:
raise Exception('Message error: ' + str(ex))
그것을 할 수 있는가 : 예외가 할당 "로컬 변수 'x'를 할당하기 전에 참조 UnboundLocalError"동안 던지는 동안이 코드는 처리하지 않습니다 더 까다 롭고 우아한? 이제 템플릿을 제외하고 두 번 시도해 보겠습니다. 그것은()가 성공적으로하지 않았다 독자를 보여줍니다 개인적으로
try:
x = a('test')
b(x, 'test2')
except Exception as ex:
if not 'x' in locals():
x = 'undefined'
raise Exception('Message error: ' + str(x) + " " + str(ex))
, 나는 더 우아한 블록을 제외/별도의 시도는 모두 예외를 잡는 생각 :
을 왜 처음에 예외 메시지에서'x'를 참조해야합니까? – roganjosh
또한 첫 번째 블록에서 원했던 것처럼 두 가지 기능을 포괄적 인 예외로 번들로 묶는 것이 좋지 않습니다 (또는 일반적으로 '제외'로 사용). 'x = a ('test')'가 실패했거나'b (x, 'test2')'입니까? 현재 해독 방법은 알려지지 않은 또 다른 예외를 제기하는 것입니다. – roganjosh