Лучше всего просто вызвать исключение в функции, а затем поймать его при вызове функции, чтобы ваша функция не делала слишком много, и ваша обработка ошибок независима. И это делает ваш код более простым.
Ваш код никогда не доходил до вашего предложения except
, потому что, если уровень воды слишком низок, он вызывает исключение и выпрыгивает из функции, и если бы это было нормально, оно просто достигало положения else
. Оператор print
в вашем предложении try
также никогда не достигается, поскольку он является тем же условием, что и тот, который вызывает ваше исключение, и что один выпрыгивает.
Ваш код должен быть что-то в этом роде ...
import sys
import os
def water_level(level):
#just raise exception in function here
if level < 10:
raise Exception("Invalid Level!")
level = level + 10
print("New level=") # If exception not raised then print new level
print(level)
#function call
print("Enter the level of tank")
#cast to int
level=int(input())
try:
#call function in here
water_level(level)
#catch risen exceptions
except Exception as e:
sys.stdout.write('\a')
sys.stdout.flush()
#print exception(verification)
print(e)
print("Alarming situation has occurred.")
else:
os.system('say "Liquid level ok"')
Обратите внимание, что я исправил некоторые другие недостатки
import os
был пропавшие
- вы должны бросить ваш
input()
к числу так что вы может выполнять численные сравнения и дополнения
- старайтесь избегать наименее конкретного исключения
Exception
, потому что вы тоже поймаете все остальные исключения (вот почему я добавил print(e)
) -> подумайте о пользовательских исключениях
Мне нужна помощь в редактировании кода, когда он набирается на экране. Раздел моих комментариев имеет большой размер, и какой-то код работает на одной линии, пожалуйста, помогите. – Butters
Пожалуйста, отметьте ответ как принятый, если он решит вашу проблему. –
Я действительно не понимаю, что вы хотите сказать своим комментарием. –