【发布时间】:2016-10-28 01:20:20
【问题描述】:
我正在做一个课堂作业,我需要提出两个例外。 第一个异常:如果用户的输入小于 0 或大于 100,我应该引发并处理异常。然后代码应该再次要求用户输入数字。
第二个异常:如果未找到特定文件,异常会请求文件名,然后再次进行搜索。
在这两种情况下,我都无法让异常发生。换句话说,如果在第一个异常中,我输入了一个大于 100 或小于 0 的数字,程序将继续并且根本不为该条目记录任何内容。如果我打印用户的条目,我会得到“无”而不是 except 子句应该显示的错误消息。同样在第二个异常中,如果找不到文件,代码只是停止执行而不是触发异常。
我已经尝试手动引发异常(如question/answer),但这会创建一个我不想要的回溯——我只希望第一个异常打印错误消息并调用一个函数,而第二个异常请求输入并调用函数。
第一个例外:
def grade():
#input student's average grade
avgGrade = int(input("Enter average grade: "))
try:
if avgGrade > 0 and avgGrade < 100:
return avgGrade
except ValueError:
print("Grade must be numeric digit between 0 and 100")
grade()
第二个例外:
def displayGrades(allStudents):
try:
#open file for input
grade_file = open(allStudents, "r")
#read file contents
fileContents = grade_file.read()
#display file contents
print(fileContents)
grade_file.close()
except IOError:
print("File not found.")
allStudents = input("Please enter correct file name: ")
displayGrades(allStudents)
【问题讨论】:
标签: python-3.x exception-handling try-except