Python的异常

67 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情

异常对我们来说也是很重要的一块,每个语言在设计的时候都要考虑程序会出现异常的情况,Python中对异常的处理使用关键字except: ,下面我们从一段代码中看看Python是如何处理异常的

try:
    f = open('test.txt', 'r')
except Exception as e:
    f = open('test.txt', 'w')
else:
    print('没有异常')
finally:
    f.close()

这里是打开文件的一段代码,如果文件存在,以读取模式打开文件肯定没有任何问题,不会抛出异常,也就是except这一段的代码不会执行,else这一段代码是在不抛出异常的情况下执行,那么这里会执行,输出没有异常,finally这一段代码是不管有没有异常都会执行。如果文件不存在,就指向except里面的内容,以w模式打开文件,w模式下文件不存在会创建文件,然后就不会执行else里的内容,然后指向finally中的内容关闭文件。

所以在异常处理方面,整体和Java的try catch finally 处理异常的机制差不多,如果你了解Java的异常机制,Python的异常也就不难理解,很容易就上手了。

同时Python的异常也支持嵌套,和Java一样。

自定义异常

Python也支持用户自定义异常,自定义异常在我们开发中是很常见的,通常需要自定义异常来拦截系统中的业务异常信息。

比如这里我们定义了一个异常信息:

class ShortInputError(Exception):
    def __str__(self):
        return '密码太短'
def main():
    try:
        password = input('请输入密码:')
        if len(password) < 6:
            raise ShortInputError()
    except Exception as result:
        print(result)
    else:
        print('没有异常')
main()

这段代码中定义了一个输入内容太短的异常,同时定义了一个main()主函数,当输入内容太短的时候,通过raise ShortInputError()来抛出异常,异常抛出后会指向except中的代码,也就是打印异常信息,当输入内容正确得当的时候执行else中的语句,输出内容:没有异常。

小结

行文至此,这篇文章我们讲了Python异常的内容,主要有异常在Python中是怎么使用的,Python的异常也支持嵌套,也有finally语句等等,同时我们还可以自定义异常,这也是一个很重要的知识点,我们开发中少不了自定义异常。