2014-06-16 2 views
4

일부 코드는 오류없이 실행되지만 catch를 원하지 않으므로 except 부분에 코드를 삽입하지 않으려는 경우가 있습니다. 나는 C#에서과 같이이 작업을 수행 할 수 있습니다 :비어있는 코드가있는 try-except 절

try 
{ 
do_something() 
}catch (...) {} 

을 나는이 작업을 수행 할 수 파이썬에서 들여 쓰기이 허용하지 않기 때문에?

BTW
try: 
    do_something() 
except: 
    i_must_enter_somecode_here() 

, 어쩌면 내가 뭘 어떻게 C#에서 오류 처리 원칙에도 부합하지 않습니다. 당신이 그것에 대해 생각해 주시면 고맙습니다.

+2

일반적으로 빈 catch 블록에 : ​​나는 최근에 작업하고 빈 catch 블록을 좋아하는 것으로 보이는 사람이 작성한 응용 프로그램을 디버깅해야했습니다. 나는 왜 당신이 이것을 할 것이지는 모르겠지만 이런 어플리케이션에서 오류를 발견하는 것은 끔찍한 일입니다. 결과에서 무언가가 잘못되었다는 것을 알 수 있지만 MsgBox 등으로 많은 일을해야만 문제를 해결할 수 있습니다. –

+0

'except' 블록에서'pass'를 사용하여 특정 예외를 무시하는 것은 파이썬에서 완전히 유효합니다. ** bare ** excepts (예외 유형을 지정하지 않고)를 사용하는 것은 그렇지 않습니다. 디버깅 용이거나 실제로 어떤 식 으로든 예외를 처리 (로깅, 필터링 및 일부 재사용, ...)하지 않는 한 그렇게하지 마십시오. –

답변

7
try: 
    do_something() 
except: 
    pass 

당신은 pass 문을 사용합니다.

pass 문은 아무 작업도 수행하지 않습니다. 구문이 필요하지만 프로그램에서 아무런 조치가 필요하지 않은 경우 사용할 수 있습니다.

1
try: 
    doSomething() 
except: 
    pass 

하거나

try: 
    doSomething() 
except Exception: 
    pass 
3

사용 pass 사용할 수 있습니다 SyntaxError의 방지를 위해 pass 아무것도 단지 자리 표시 자입니다

try: 
    foo() 
except: 
    pass 

은, 그냥 함께 전달합니다. the docs에서

:

패스 문은 아무것도하지 않습니다. 구문이 필요하지만 프로그램에서 아무런 조치가 필요하지 않은 경우 사용할 수 있습니다. 당신이 볼 수 있듯이

, 우리는 몸없이 SyntaxError을 제기 빈 함수를 만들려면 :

>>> def foo(): 
...  pass 
... 
>>> foo() 
>>> 
그러나

>>> def foo(): 
... 
    File "<stdin>", line 2 

    ^
IndentationError: expected an indented block 
>>> 

pass무효의 발생