做一个处理所有错误的函数是正常的吗?

2024-05-16 18:04:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我在代码中添加了错误处理,但我认为它完全破坏了代码的外观。所以我想做一个函数来处理所有的错误,但是我在网上找不到任何例子,所以我试着自己想办法

def checkerr(datatype,obj):    

    try:
        var=datatype(obj)
        return(var)
    except ValueError as error:
        print(error,'you did not type in an integer')        
    except IOError as error:
        print(error,'file could not be found')


no=input('type in an integer: ')
realno=checkerr(int,no)

file=input('type in a filenane: ')
realfile=checkerr(open,file)

应该怎么做


Tags: 代码inanobjvarastypenot
1条回答
网友
1楼 · 发布于 2024-05-16 18:04:22

你走在好的路上。在函数中定义这段代码允许avoid repetitions

但是最好是在输入有效之前重新询问用户,这样您就可以依赖函数始终返回一个好的值

函数将在第一次尝试失败后返回None。然后代码又会变得复杂起来

我的建议是:

def ask(prompt, datatype):
    while True:
        obj = input(prompt)
        try:
            var = datatype(obj)
            return(var)
        except (ValueError, IOError) as error:
            print(error)

示例:

>>> i = ask('type in an integer: ', int); print('you entered: %d' % i)
type in an integer: two
invalid literal for int() with base 10: 'two'
type in an integer: 2
you entered: 2

相关问题 更多 >