我有一个简单的try-except代码:
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)输出异常:
CheckTestFirmwareCommunication_SetPort: CheckTestFirmwareCommunication_SetPort: DD_NoResponseException()
问题:
try-except捕获异常,是否可以忽略print语句?发布于 2014-01-22 14:34:08
这是抛出异常的第二行print:
print self.tf.DUT.CheckTestFirmwareCommunication_SetPort()第一个print行没有执行并被执行。
Python只在抛出异常时执行try套件中的每条语句,并将执行中止并传输到except块。如果不希望在print抛出异常时执行第一个CheckTestFirmwareCommunication_SetPort语句,请先调用该方法
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)发布于 2014-01-22 14:35:10
第一个print语句是在异常发生之前执行的,因此会打印它们。
这里的例外是由self.tf.DUT.CheckTestFirmwareCommunication_SetPort()引发的。您可以将print语句移到它下面,以便在成功执行第一行时打印它。
try:
print self.tf.DUT.CheckTestFirmwareCommunication_SetPort()
print "\tCheckTestFirmwareCommunication_SetPort: "
except NoResponseException, e:
print "\tCheckTestFirmwareCommunication_SetPort: ", repr(e)发布于 2014-01-22 14:36:04
问题是,异常是由行引发的:
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)https://stackoverflow.com/questions/21285721
复制相似问题