2014-01-22 3 views
1
나는이 간단한 try-except 코드가

:인쇄 문을 무시하면 시도 캐치 예외

CheckTestFirmwareCommunication_SetPort :
CheckTestFirmwareCommunication_SetPort : 예외와

self.tf.router.EchoProg(state=1) 
try: 
    print "\tCheckTestFirmwareCommunication_SetPort: " 
    print self.tf.DUT.CheckTestFirmwareCommunication_SetPort() 
except NoResponseException, e: 
    print "\tCheckTestFirmwareCommunication_SetPort: ", repr(e) 
self.tf.router.EchoProg(state=0) 

출력 DD_NoResponseException()를

질문 : 난 아직 내가 예외를 얻을 경우에도 인쇄 문을 볼 이유

  1. 누군가가 설명 할 수 있습니까?

  2. try-except이 예외를 잡으면 인쇄 명령문을 무시할 수 있습니까? 제 print 라인이 실행되지 않은 및

    print self.tf.DUT.CheckTestFirmwareCommunication_SetPort() 
    

    :

답변

2

는 예외를 던지는 print 라인이다.

파이썬은 try 제품군 내의 각 명령문을 실행하고 예외가 발생할 때만 실행이 중단되고 except 블록으로 전송됩니다. 당신이 CheckTestFirmwareCommunication_SetPort 예외, 전화 먼저 방법 발생하면 첫 번째 print 문을 실행하지 않으려면 : 예외가 발생하기 전에

self.tf.router.EchoProg(state=1) 
try: 
    port = self.tf.DUT.CheckTestFirmwareCommunication_SetPort() 
    print "\tCheckTestFirmwareCommunication_SetPort: " 
    print port 
except NoResponseException, e: 
    print "\tCheckTestFirmwareCommunication_SetPort: ", repr(e) 
self.tf.router.EchoProg(state=0) 
1

첫 번째 print 문이 실행될를, 따라서 그들은 인쇄됩니다.

여기서 예외는 self.tf.DUT.CheckTestFirmwareCommunication_SetPort()으로 제기됩니다. 첫 번째 행이 성공적으로 실행될 때 인쇄되도록 인쇄 문을 그 아래로 이동할 수 있습니다.

try: 
    print self.tf.DUT.CheckTestFirmwareCommunication_SetPort() 
    print "\tCheckTestFirmwareCommunication_SetPort: " 
except NoResponseException, e: 
    print "\tCheckTestFirmwareCommunication_SetPort: ", repr(e) 
+0

는 출력 의도되지 않으므로. 'port'는 문자열''\ tCheckTestFirmwareCommunication_SetPort :''앞에 인쇄됩니다. –

+0

@RaydelMiranda 네, 맞습니다. 나는 인쇄 진술의 순서가 중요하다는 것을 몰랐다. – Sudipta

1

문제는 그 예외가 선으로 제기된다 :

print self.tf.DUT.CheckTestFirmwareCommunication_SetPort() 

그래서 라인 : 항상 실행됩니다에 의해

print "\tCheckTestFirmwareCommunication_SetPort: " 

.

그에게 코드를 변경하지 않도록 : 같은 코드를 변경하여

self.tf.router.EchoProg(state=1) 
try: 

    port = self.tf.DUT.CheckTestFirmwareCommunication_SetPort() 
except NoResponseException, e: 
    print "\tCheckTestFirmwareCommunication_SetPort: ", repr(e) 
else: 
    print "\tCheckTestFirmwareCommunication_SetPort: ", port 
self.tf.router.EchoProg(state=0)