异常问题

时间:2019-04-03 14:06:23

标签: python

告诉我有一个ValueError异常,请注意。困惑为什么我继续收到错误消息。

def readHourlyRate():
    try:
       rate = float(input('Hourly Rate:$')) 
       if rate < 20:
           print("Must be atleast $20.00/ hour")
    except ValueError:
        print("\nInvalid Hourly Rate, must be atleast $20.00/hour.")
        return rate

3 个答案:

答案 0 :(得分:1)

使用此工作示例:

def readHourlyRate():
    try:
        rate = float(input('Hourly Rate:$'))
        if rate < 20:
            print("Must be atleast $20.00/ hour")
    except ValueError:
        print("\nInvalid Hourly Rate, must be atleast $20.00/hour.")
        return rate

readHourlyRate()

然后将字符串作为输入,这就是您得到的回溯:

Traceback (most recent call last):
  File "C:/[...].py", line 3, in readHourlyRate
    rate = float(input('Hourly Rate:$'))
ValueError: could not convert string to float: 'sdfsdf'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/[...].py", line 10, in <module>
    readHourlyRate()
  File "C:/[...].py", line 8, in readHourlyRate
    return rate
UnboundLocalError: local variable 'rate' referenced before assignment

通过仔细阅读它,我们可以看到在处理由无效输入引发的ValueError异常期间,由于我们试图返回rate变量,引发了另一个未处理的异常。 但是,从未声明或分配此变量,因为在我们尝试这样做时引发了ValueError

根据您希望程序执行的操作,然后可以在except块中分配一个默认值,如下所示:

except ValueError:
print("Invalid Hourly Rate, must be atleast $20.00/hour.")
print("Returning default value 20")
return 20

或者只是让错误传播

答案 1 :(得分:0)

尝试一下:

def readHourlyRate():
    rate = input('Hourly Rate:$')
    try:
       if float(rate) < 20:
           print("Must be atleast $20.00/ hour")
    except Exception as e:
        print("\nInvalid Hourly Rate, must be atleast $20.00/hour.")
        return rate

readHourlyRate()

答案 2 :(得分:0)

将代码更改为以下内容:-

GaussianBlur(im, tempIm, Size(9, 9), 1, 1, BORDER_REFLECT);
findContours(tempIm, contours, hierarchy, RETR_TREE, CHAIN_APPROX_TC89_KCOS);