В моей обработке исключений я пытаюсь перехватить ошибки ZeroDivisionError, но по какой-то причине код все еще выполняет деление на 0 и не возвращает ошибку. Должно быть, я что-то делаю не так, но не могу это сделать
Я попытался переместить деление в другое место функции, а также переместить перехват ошибок деления.
filename = "numbers.txt"
def main():
total = 0.0
number = 0.0
counter = 0
average = 0
#Open the numbers.txt file
try:
infile = open(filename, 'r')
#Read the values from the file
for line in infile:
counter = counter + 1
number = float(line)
total += number
average = total / counter
#Close the file
infile.close()
except IOError:
print('An error occurred trying to read the file', end=' ')
print(filename, '.', sep='')
except ValueError:
print('Non-numeric data found in the file', end=' ')
print(filename, '.', sep='')
except Exception as err:
print('A general exception occurred.')
print(err)
except ZeroDivisionError:
print('Cannot devide by zero.')
else:
print('Average:', average)
print('Processing Complete. No errors detected.')
# Call the main function.
main()
Я ожидаю, что результат выдаст сообщение об ошибке при делении на ноль, но вместо этого возвращается ноль в качестве ответа.