思路阐述
- try块:将可能引发异常的代码,即验证用户身份、检查账户余额、执行交易等操作放在
try
块中。这样当其中任何一步出现异常时,程序不会直接崩溃,而是跳转到except
块进行处理。
- except块:根据不同类型的异常进行针对性处理。例如,用户身份验证失败可能抛出
AuthenticationError
,账户余额不足可能抛出InsufficientFundsError
等。在except
块中记录错误日志,向用户返回友好的错误提示等。
- else块:当
try
块中没有任何异常发生时,else
块中的代码会被执行。这可以用于执行交易成功后的一些操作,比如记录交易日志等,使成功流程和异常处理流程清晰分开,优化代码结构。
关键部分代码示例
class AuthenticationError(Exception):
pass
class InsufficientFundsError(Exception):
pass
def authenticate_user(user_id, password):
# 模拟验证用户身份
if user_id!= "valid_id" or password!= "valid_password":
raise AuthenticationError("用户身份验证失败")
return True
def check_account_balance(account_id):
# 模拟检查账户余额,假设账户余额为100
balance = 100
if balance < 50: # 假设交易金额为50
raise InsufficientFundsError("账户余额不足")
return balance
def execute_transaction(account_id, amount):
# 模拟执行交易
print(f"执行交易,从账户 {account_id} 扣除金额 {amount}")
try:
user_id = "valid_id"
password = "valid_password"
account_id = "12345"
amount = 50
authenticate_user(user_id, password)
balance = check_account_balance(account_id)
execute_transaction(account_id, amount)
except AuthenticationError as e:
print(f"错误: {e}")
except InsufficientFundsError as e:
print(f"错误: {e}")
else:
print("交易成功,记录交易日志等操作")