零基础学 Python(2018 版)
尹会生
前游戏公司技术总监,前新浪网技术经理
80146 人已学习
新⼈⾸单¥68
课程目录
已完结/共 72 讲
第一章 :Python介绍和安装 (3讲)
第二章 :Python基础语法 (3讲)
第四章 :条件与循环 (5讲)
第五章 :映射与字典 (2讲)
第六章 :文件和输入输出 (2讲)
第七章 :错误和异常 (1讲)
第九章 :模块 (1讲)
第十章 :语法规范 (1讲)
第十一章 :面向对象编程 (4讲)
第十二章 :多线程编程 (2讲)
第十六章 :综合案例 & 结课测试 (1讲)
特别放送 (1讲)
零基础学 Python(2018 版)
登录|注册
留言
32
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 21 | 异常的检测和处理
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | Python语言的特点
02 | Python的发展历史与版本
03 | Python的安装
04 | Python程序的书写规则
05 | 基础数据类型
06 | 变量的定义和常用操作
07 | 序列的概念
08 | 字符串的定义和使用
09 | 字符串的常用操作
10 | 元组的定义和常用操作
11 | 列表的定义和常用操作
12 | 条件语句
13 | for循环
14 | while循环
15 | for循环语句中的if嵌套
16 | while循环语句中的if嵌套
17 | 字典的定义和常用操作
18 | 列表推导式与字典推导式
19 | 文件的内建函数
20 | 文件的常用操作
21 | 异常的检测和处理
22 | 函数的定义和常用操作
23 | 函数的可变长参数
24 | 函数的变量作用域
25 | 函数的迭代器与生成器
26 | Lambda表达式
27 | Python内建函数
28 | 闭包的定义
29 | 闭包的使用
30 | 装饰器的定义
31 | 装饰器的使用
32 | 自定义上下文管理器
33 | 模块的定义
34 | PEP8编码规范
35 | 类与实例
36 | 如何增加类的属性和方法
37 | 类的继承
38 | 类的使用-自定义with语句
39 | 多线程编程的定义
40 | 经典的生产者和消费者问题
41 | Python标准库的定义
42 | 正则表达式库re
43 | 正则表达式的元字符
44 | 正则表达式分组功能实例
45 | 正则表达式库函数match与search的区别
46 | 正则表达式库替换函数sub()的实例
47 | 日期与时间函数库
48 | 数学相关库
49 | 使用命令行对文件和文件夹操作
50 | 文件与目录操作库
51 | 机器学习的一般流程与NumPy安装
52 | NumPy的数组与数据类型
53 | NumPy数组和标量的计算
54 | NumPy数组的索引和切片
55 | pandas安装与Series结构
56 | Series的基本操作
57 | Dataframe的基本操作
58 | 层次化索引
59 | Matplotlib的安装与绘图
60 | 机器学习分类的原理
61 | Tensorflow的安装
62 | 根据特征值分类的模型和代码
63 | 网页数据的采集与urllib库
64 | 网页常见的两种请求方式get和post
65 | HTTP头部信息的模拟
66 | requests库的基本使用
67 | 结合正则表达式爬取图片链接
68 | Beautiful Soup的安装和使用
69 | 使用爬虫爬取新闻网站
70 | 使用爬虫爬取图片链接并下载图片
强势回归:零基础学Python2022版来啦!
71 | 如何分析源代码并设计合理的代码结构&结课测试
本节摘要

课程源码、课件及课后作业地址:

https://gitee.com/geektime-geekbang/geekbangpython

登录 后留言

全部留言(32)

  • 最新
  • 精选
Ricky
老师你好,except后面跟的异常类型是否有一个通用的字段来表示?因为事先不清楚具体错误值,也不想罗列太多错误值,所以想问下是否有个通用的值来表示所有错误?

作者回复: 使用 except: 写法就可以匹配其他异常了,但是建议写成except Exception as e: 的形式,可以通过对e的输出了解具体产生的是哪种异常。

2018-07-27
8
Airsaid
finally 的演示这里,ide 有个警告说 file 未定义,这里是否会有问题呢?

作者回复: 按照演示,如果open( )打开的文件不存在,是会直接被except捕获的,因此为变量赋值的语句不会执行,也就是finally的提示,变量未定义了。 这是except捕获异常的正常流程,那要想解决打开文件不存在的方法怎么做呢,最常见的两种办法是:第一种是用open('文件名','a+')方式,使用a+属性,如果打开的文件不存在就自动创建文件; 另一种规范的方法是打开文件之前通过os等系统相关的模块判断文件是否存在,还要判断存在的名称是文件还是文件夹,即: os.path.isfile('文件路径/文件名称')

2018-07-09
5
小潘221150
老师 我怎么能联系上您呢?我有点问题 关于自定义异常的部分? 项目中要求写自定义异常,我搜到了写自定义异常的思路。我想用retry这个模块,比如tries=3,try3次,如果有异常 每次retry的时候都要更新一下DB的记录。我该怎么做呢?谢谢老师了

作者回复: 这里需要考虑两个问题:1选择什么db?2在哪里执行插入db。 1 选择不同的db需要使用不同的函数库,如果是实验可以考虑使用redis,操作和实验起来很简单,把插入db封装成一个函数 2 在哪里调用呢?你可以找到retry的官方网站,会发现retry库有一种装饰器模式,也有一种使用retry_call的函数模式,但都不能直接写库,所以找到retry函数库的github,发现代码里面有except Exception as e: 可以在这里添加你的函数。 这是实现原理,看看你能否想到更优雅的实现方式呢?

2018-10-16
4
老师能讲一下别的类型错误吗?如:TclError

作者回复: tkinter.TclError这个错误是tkinter自己定义的,这类错误一般通过搜索引擎多数会有答案,另外还有一类叫内置错误的,在官方文档这个位置:https://docs.python.org/zh-cn/3.6/library/exceptions.html 因为python内置类型的某种原因 产生的异常,在这里全都有介绍

2020-01-20
2
唐龙
老师,我还是没太明白关键字raise的功能。 课上说的是:如果觉得内置的错误类型不够的话,Python还可以自己定义错误的提示信息。那课上的这部分代码 try: raise NameError('helloError') except NameError: print('my custom error') 这部分代码的作用是不是可以理解为,从此再有NameError时显示的就是'my custom error’ ? 但是我下方尝试写上a = b ,可是错误提示信息还是NameError: name 'b' is not defined 啊…… 那么到底如何自己定义呢?关键字raise到底有什么用呢?

作者回复: 1 raise 引发的异常,每次只能引发一个异常实例 2 程序自动引发的异常可以用try except 结构捕获,raise是开发者手动引发的异常,如: 1>0 在程序一般逻辑中不会出现异常,一旦程序逻辑需要,就要手动触发异常--即显式引发异常 try: must_be_int = 1 if must_be_int > 0 : raise ValueError("输入的变量大于0") except Exception as e: print("raise抛出的信息",e)

2019-09-07
1
chi
老师,想请问您关于本节作业的问题。本节作业第一题中,要求‘’访问字典不存在的关键字‘’,我写了如下代码: ====== dic1 = {'a':1,'b':'2'} try: i = dic1['c'] except Exception as e: print(e) ====== 输出结果是: ====== 'c' Process finished with exit code 0 ====== 想请问您为什么不输出 ‘KeyError’ 呢?

作者回复: except Exception 是捕获所有的异常,输出是不会输出异常类的,只会输出异常的属性。

2019-04-25
1
没时间了ngu
老师 我看你的实例开头没有加# coding=gbk,程序也能正常运行。 我自己的就会报syntaxError这个错呢。 1. try: 2. year = int(input('input year:')) 3. except ValueError as a: 4. print("请输入数字") File "E:/pytest/exception_test.py", line 4 SyntaxError: Non-UTF-8 code starting with '\xca' in file E:/pytest/exception_test.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details Process finished with exit code 1

作者回复: 您好,方便提供一下 操作系统和python的版本信息吗? 如 windows7 python3.6 我在windows10 python3.7 和mac下没有复现出您的问题。 如果您在PyCharm环境下运行,尝试重新创建一个新的.py文件运行,并观察一下右下角文件的编码是否为utf8,如果是其他编码可以点击进行修改,看看这样能否解决您的问题。

2019-01-23
1
师志强
演示时由于文件不存在造成finally里面出现未定义异常,Python中没有判断某个变量是否已定义的方法吗(比如JAVA中是否为null)?如果定义再关闭,不是就不会在finally里面再发生异常了吗

作者回复: 这也是一个办法,但是判断的不完善,比如路径存在但是是个文件夹呢?所以通常我们会判断文件路径是否存在是否为文件,如果是文件或者文件不存在,则在目录下用a+模式打开(open)这个文件

2018-09-02
1
蓝洛
在捕获全部异常时候 我的代码如下,却只提示第一个异常信息’全部错误是name 'j' is not defined‘。不明白哪里出了问题,请老师帮忙解答 try: i=j a='123' print(a[3]) d={'a':1,'b':2} print(d['c']) f=123 f.append() print(1/0) except Exception as e: print('全部错误是%s' %e)

作者回复: 你好, 捕获到异常之后, python会从try语句块运行到except语句块,try语句块中的程序不会被执行,所以你只看到一个异常,如果需要捕获多个异常可以使用下面方式实现 try: raise TypeError("类型异常") raise ValueError("值异常") except (ValueError, TypeError) as vt: print(type(vt), "is", vt) except Exception as e: print("ALL Exception is %s" %e) 但是要注意,这里仍然只能捕获ValueError, TypeError两者中的一个

2021-03-04
이예
老师,请教一个问题,演示的例子中; try: a = open('name1.txt') except Exception as e: print('打开失败,错误信息为:%s' %(e)) finally: a.close() 程序运行完成后,会出现NameError: name 'a' is not defined,也就是NameError没有被捕获到,使用这个语句except Exception as e: 应该是捕获所有的异常才对呀

作者回复: f = open("demo.txt", "w") try: f.write('aaa') except Exception as e: print(e) finally: f.close() print('文件关闭') 改成这种写法

2020-07-22
收起评论