예 :파이썬의 try 블록에서 다음 줄을 계속하는 방법은 무엇입니까?
try:
foo()
bar()
except:
pass
foo 함수가 예외를 발생시킬 때 다음 줄 (bar)으로 건너 뛰고 실행하는 방법은 무엇입니까?
예 :파이썬의 try 블록에서 다음 줄을 계속하는 방법은 무엇입니까?
try:
foo()
bar()
except:
pass
foo 함수가 예외를 발생시킬 때 다음 줄 (bar)으로 건너 뛰고 실행하는 방법은 무엇입니까?
는 try
블록에서 bar()
을 보자.
try:
foo()
except:
pass
bar()
, BTW 포괄 except
조항에 조심. 처리하거나 무시할 수있는 예외를 선별 적으로 포착하는 것이 좋습니다.
bar
에 대한 호출이 try
- 블록 안에있는 경우 수행 할 수 없습니다. 어느 쪽이든 당신은 블록을 제외하고 시도-의 외부 통화를 보류하거나 사용할 수있는 else
: 물론 예외가 발생할 수 있습니다
try:
foo()
except:
pass
else:
bar()
bar
경우 bar
에 대해 별도의 try
블록을 사용합니다.
try/except 블록을 사용하려는 의도 된 방법이 아닙니다. 당신이 두 기능에서 예외 조항을 제외하고 동일 의해 처리하려면
try:
foo()
except:
pass # or whatever
try:
bar()
except:
pass # or whatever
은 다음 내부의 시도를 사용 bar()
이 foo()
이 실패하는 경우에도 실행해야하는 경우 블록을 제외하고/자신의 시도에 각각 넣어한다/마지막 블록 :
try:
try:
foo()
finally:
bar()
except Exception:
print 'error'
foo()
에 예외가있을 경우는, 제 bar()
가 실행되며, 다음 절 제외.
그러나 일반적으로 try 블록 안에 최소 코드를 넣는 것이 좋습니다. 따라서 각 함수에 대한 별도의 예외 처리기가 가장 적합 할 수 있습니다.
foo() bar() 함수가 두 개인 경우 다른 해결책을 확인하십시오.
이def foo():
raise Exception('foo_message')
def bar():
print'bar is ok'
def foobar():
raise Exception('foobar_message')
functions_to_run = [
foo,
bar,
foobar,
]
for f in functions_to_run:
try:
f()
except Exception as e:
print '[Warning] in [{}]: [{}]'.format(f.__name__,e)
결과 :
[Warning] in [foo]: [foo_message]
bar is ok
[Warning] in [foobar]: [foobar_message]
예외를 제외하고'될 것이다 제외한 베어의 더 나은 형태 :'로이 잡을 수 없습니다 당신이 라인을 많이 실행해야하는 경우,이 예제 같은 것을 시도 KeyboardInterrupt 나 SystemExit 같은 것들. 그래서 이것이 빡빡한 고리에 걸리면^C로 탈출 할 수 있습니다. – PaulMcG