异常的概念 | 手把手教你入门Python之七十六

简介: 程序在运⾏过程中,由于我们的编码不规范,或者其他原因⼀些客观原因,导致我们的程序⽆法继续运⾏,此时,程序就会出现异常。

上一篇:序列化和反序列化 | 手把手教你入门Python之七十五
下一篇:面向对象案例练习 | 手把手教你入门Python之七十七

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

异常的概念

程序在运⾏过程中,由于我们的编码不规范,或者其他原因⼀些客观原因,导致我们的程序⽆法继续运⾏,此时,程序就会出现异常。如果我们不对异常进⾏处理,程序可能会由于异常直接中断掉。为了保证程序的健壮性,我们在程序设计⾥提出了异常处理这个概念。
读取文件异常
在读取⼀个文件时,如果这个文件不存在,则会报出 FileNotFoundError 错误。
image.png
除数为零异常
出现ZeroDivisionError异常
image.png
程序在运⾏过程中会经常遇到类似的异常,如果我们不进⾏处理,此时程序就会中断并退出。为了提⾼程序的健壮性,我们可以使⽤异常处理机制来解决程序运⾏过程中可能出现的问题。

try...except语句

try...except语句可以对代码运⾏过程中可能出现的异常进⾏处理。 语法结构:

try:
    可能会出现异常的代码块
except 异常的类型:
    出现异常以后的处理语句

示例:

try:
    f = open('test.txt', 'r')
    print(f.read())
except FileNotFoundError:
    print('⽂件没有找到,请检查⽂件名称是否正确')

try...else语句

咱们应该对else并不陌⽣,在if中,它的作⽤是当条件不满⾜时执⾏的实⾏;同样在try...except...中也是如此,即如果没有捕获到异常,那么就执⾏else中的事情

def div(a, b):
    return a / b

try:
    x = div(5 / 0)
except Exception as e:
    print('程序出错了!!!!')
else:
    print('计算的结果是', x)

finally关键字的使用

file = open('../02-视频/03-练习3.mp4', 'rb')

try:
    while True:
        content = file.read(1024)
        if not content:
            break
        print(content)
finally:   # 最终都会被执行的代码
    print('文件被关闭了')
    file.close()

finally的注意事项:

def test(a, b):
    x = a + b
    return x   # 一旦return 就表示函数结束
    return 'hello'   # 这段代码不会被执行,一般情况下,一个函数最多只能执行一个return


def demo(a, b):
    try:
        x = a / b
    except ZeroDivisionError:
      return '除数不能为0'
    else:
        return x
    finally:
        return 'good'  # 如果函数里有finally,finally的返回值会覆盖之前的返回值

print(demo(1, 2))  # 0.5
# print(demo(1, 0))  # 除数不能为0,None

try..finally语句

try...finally...语句⽤来表达这样的情况:

在程序中,如果⼀个段代码必须要执⾏,即⽆论异常是否产⽣都要执⾏,那么此时就需要使⽤finally。⽐如⽂件关闭,释放锁,把数据库连接返还给连接池等。

try:
    f = open('test.txt')
    try:
        while True:
            content = f.readline()
            if len(content) == 0:
                break
                print(content)
    except:
        #如果在读取⽂件的过程中,产⽣了异常,那么就会捕获到
        #⽐如 按下了 ctrl+c
        pass
    finally:
        f.close()
        print('关闭⽂件')
except:
    print("没有这个⽂件")

说明:

我们可以观察到KeyboardInterrupt异常被触发,程序退出。但是在程序退出之前,finally从句仍然被执⾏,把⽂件关闭。

异常使用场景

解决输入不是数字以及输入年龄非整数的问题。

age  = input('请输入您的年龄:')

try:
    age = float(age)
except ValueError as e:
    print('输入的不是数字')
else:
    if age > 18:
        print('欢迎来到我的网站')
    else:
        print('未满18岁,请自动离开')

配套视频

相关文章
|
1天前
|
Python
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
|
1天前
|
存储 索引 Python
Python从入门到精通——1.3.1练习编写简单程序
Python从入门到精通——1.3.1练习编写简单程序
|
1天前
|
开发框架 前端开发 数据库
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
|
1天前
|
数据采集 数据可视化 数据处理
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
|
1天前
|
Java 数据库连接 数据处理
Python从入门到精通:3.1.2多线程与多进程编程
Python从入门到精通:3.1.2多线程与多进程编程
|
1天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
7天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
19 1
|
数据采集 数据挖掘 编译器
【Python 基础教程】错误与异常的处理
【Python 基础教程】错误与异常的处理
120 0
【Python 基础教程】错误与异常的处理
|
Python
Python学习:错误与异常
使用try...except可以处理异常
117 0
|
存储 缓存 安全
【python】错误和异常(第三讲)
assert,翻译过来是“断言”之意。assert 是一句等价于布尔真的判定,发生异常就意味着表达式为假。 assert 的应用情景就有点像汉语的意思一样,当程序运行到某个节点的时候,就断定某个变量的值必然是什么,或者对象必然拥有某个属性等,简单说就是断定什么东西必然是什么,如果不是,就抛出错误。......
177 0
【python】错误和异常(第三讲)

热门文章

最新文章