【发布时间】:2016-04-15 05:55:49
【问题描述】:
我目前正在编写一个银行应用程序,您可以在下面看到我的代码:
from customer import Customer
from exceptions import KeyError
class Bank(object):
""" All the bank operations are contained in this class e.g customer Registration """
def __init__(self, name):
self.name = str(name)
self.customers = dict()
self.registration_customer(name)
def registration_customer(self, name):
""" Registration of a new user to the bank
Args:
name (str): name of the customer
"""
name = str(name)
if not self.customers.get(name, None):
self.customers[name] = Customer(name)
def close_customer_account(self, name, account_type):
""" close an account of a customer by name and account_type
Args:
name (str) : name of the account holder
account_type (str) : type of account
"""
name = str(name)
account_type = str(account_type)
customer = self.customers.get(name, None)
if customer:
customer.close_account(account_type)
def get_customer_info(self, name):
""" get customer info
Args:
name (str) : name of the customer
"""
if not self.customers[name]:
raise KeyError('I am sorry! Customer does not exist')
return self.customers[name]
引发错误
如果你看到get_customer_info 函数,如果name 不存在,那么我提出了一个error。假设银行应用程序非常关键,这是我可以在 Python 中提出error 的最佳方法吗?您也可以假设这是一个生产级代码。
def get_customer_info(self, name):
""" get customer info
Args:
name (str) : name of the customer
"""
if not self.customers[name]:
raise KeyError('I am sorry! Customer does not exist')
return self.customers[name]
【问题讨论】:
-
确实没有“优雅”的方式来引发错误,优雅地引发错误意味着什么?你所做的几乎就是应该做的。
-
这不是关于如何引发错误,而是关于如何处理它。这就是你需要关注的地方。
标签: python exception error-handling raise raiserror