Исключение ValueError в транзакцииPython

Программы на Python
Anonymous
Исключение ValueError в транзакции

Сообщение Anonymous »

Код: Выделить всё

class BankAccount:
def __init__(self, account_number, balance=0):
self.account_number = account_number
self.balance = balance

def deposit(self, amount):
self.balance += amount

def withdraw(self, amount):
if amount > self.balance:
raise ValueError("Insufficient funds")
self.balance -= amount

def get_balance(self):
return self.balance

class Transaction:
def __init__(self, account, amount):
self.account = account
self.amount = amount

def execute(self):
try:
self.account.withdraw(self.amount)
except ValueError as e:
print(f"Error: {e}")

def main():
account = BankAccount("123456")
account.deposit(1000)
transaction = Transaction(account, 500)
transaction.execute()
print(f"Account balance: ${account.get_balance():.2f}")

main()
Ошибка в этом коде находится в классе Transaction. Метод выполнения() пытается выполнить транзакцию, вызывая метод вывода() для объекта учетной записи, но если вывод средств не удался (например, из-за недостаточности средств), он перехватывает исключение ValueError и печатает сообщение об ошибке. Однако на самом деле он не устраняет ошибку путем отката транзакции или повторной попытки вывода средств.
Эта ошибка может привести к неожиданному поведению и потенциальной потере данных, поскольку баланс счета может быть обновлено неправильно.
Сможете ли вы обнаружить эту ошибку и исправить ее?

Подробнее здесь: https://stackoverflow.com/questions/786 ... ransaction

Вернуться в «Python»