我正在尝试找出处理异常的最Python方式。假设我们有一个很长的方法,可以完成与注册汽车有关的多个任务
例如
调用方法应该处理异常吗?
def process_car_registration(self, registration):
try:
car_details = self.retrieve_car_details(registration)
except:
car_details = None
print("Cannot retrieve car details")
try:
car_tax = self.calculate_tax_due(registration)
except:
car_tax = None
print("Cannot calculate tax due")
try:
self.send_confirmation_email(registration, car_details, car_tax)
except:
print("Cannot send confirmation email")
def calculate_tax_due(self, registration):
return self.dal.get_car_tax(registration)
或者各个方法本身应该处理异常。如果此方法中有任何例外情况,我们只想记录下来(或在这种情况下将其打印出来)并继续。
def process_car_registration(self, registration):
car_details = self.retrieve_car_details(registration)
car_tax = self.calculate_tax_due(registration)
self.send_confirmation_email(registration, car_details, car_tax)
def calculate_tax_due(self, registration):
try:
return self.dal.get_car_tax(registration)
except:
print("Cannot calculate tax due")
return None
一种方法比另一种方法更pythonic,还是更易读?我更喜欢第二种方法,但是我们似乎更经常使用第一种方法。
答案 0 :(得分:0)
这两个代码的行为有所不同:第一个代码在提取汽车失败后仍会尝试计算税收。如果您想要这种行为,则本质上需要第一个版本,但如果不需要,那么那么多的try-catch块可能毫无意义