Python5--异常处理
2020-08-24 本文已影响0人
伊洛的小屋
1.异常处理
- 对于不符合预期的用户操作或数据输入,程序总会出现异常情况
# 伊洛Yiluo
# https://yiluotalk.com/
>>> file_path = '/usr/local/bin/error.py'
>>> f = open(file_path)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/bin/error.py'
2.Python 常用的异常类
-
NameError
访问一个未定义的变量 -
SyntaxError
语法错误,这个严格讲算是程序的错误 -
IndexError
对于一个序列,访问的索引超过了序列的范围 -
KeyError
访问一个不存在的字典 Key -
ValueError
传入无效的参数 -
AttributeErrr
访问类对象中不存在的属性
3.异常处理方式
- 处理方法为使用 try,except 和 finally 三个关键字
>>> file_path = '/usr/local/bin/error.py'
>>> try:
... f = open(file_path)
... except FileNotFoundError as err:
... print(err)
...
[Errno 2] No such file or directory: '/usr/local/bin/error.py'
- 当 try 代码块中一旦出现异常,这个代码块后续的代码不会继续执行,会直接进入到 except 异常处理代码块中
- finally 关键字是用来进行清理工作,经常和 except 一起使用,即无论是正常还是异常,这段代码都会执行
- except: 这个语句后不写任何参数,表示将处理所有 try 代码块中抛出的异常
>>> file_path = '/usr/local/bin/error.py'
>>> try:
... f = open(file_path)
... except FileNotFoundError:
... print('FileNotFoundError')
... finally:
... print('Finally')
...
FileNotFoundError
Finally
4.抛出异常
raise ValueError()
5.Python 包管理工具
- Python 提供了包管理工具 pip,
pip
的官方网站是 PyPi
6.pip 的常见命令
- 显示版本和路径:
pip3 --version
- 升级 pip:
sudo pip3 install --upgrade pip
- 安装包:(sudo) pip3 install package,如果需要指定版本就是:pip3 install package==6.6.6 (写具体的版本号)
- 卸载包:
pip3 uninstall package
- 升级包:
pip3 install --upgrade package
,可以使用 ==,>=,<=,<,> 来指定版本号 - 查看安装已安装的包:
pip3 freeze
- 把需要安装的一系列包写入
requirements.txt
文件中,然后执行:pip3 install -r requirements.txt
7.错误和异常
- 写程序的时候通常会出现错误,目前(至少)有两种可区分的错误:
语法错误
和异常
- 语法错误:又称
解析错误
,经常容易遇到 - 异常:即使语句或表达式在语法上是正确的,但在尝试执行时,它仍可能会引发错误
8. 简单的例子
# 伊洛Yiluo
b = 1
c = a + b
print(c)
- 上面很简单的代码执行后就会出错,因为并没有定义变量
a
-
Python
提供的异常处理
方法来捕获并处理异常,处理方法为使用try,except
和finally
三个关键字
9. try, except 的使用
-
try
代码块中写可能会出现异常的代码 -
except
代码块中添加处理异常的方法 - 来将上面的代码处理一下
# 伊洛Yiluo
b = 1
try:
c = a + b
print(c)
except NameError as err:
print('错误:{}'.format(err))
- 依旧没有赋值
a
变量 - 然后执行一下
错误:name 'a' is not defined
Process finished with exit code 0
- 错误提示变量
a
没有被定义 -
NameError
的指的是访问了一个未定义的变量
- 常见的还有
SyntaxError ,IndexError ,KeyError ,ValueError ,AttributeError
10.多个except
-
except
可以有多个,每个处理不同类型的异常,也可以不写任何异常类型名称,则会处理所有捕获
的异常
# 伊洛Yiluo
a = 2
b = 1
try:
c = a + b
print(c)
f = open('/yiluo/bin/activate.txt')
except NameError as err:
print('错误:{}'.format(err))
except FileNotFoundError as err2:
print('错误:{}'.format(err2))
- 打开一个不存在的文件
3
错误:[Errno 2] No such file or directory: '/yiluo/bin/activate.txt'
Process finished with exit code 0
- 系统抛出了
异常
,没有这个文件
# 伊洛Yiluo
b = 1
try:
c = a + b
f = open('/yiluo/bin/activate.txt')
except:
print('总之就是有错误')
- 不写任何
异常
的类型
- 运行一下
总之就是有错误
Process finished with exit code 0
11.finally的使用
- 使用
finally
可以保证无论try
代码块中的代码是否抛出异常
,都能够执行finally
代码块里的内容
# 伊洛Yiluo
a = 2
b = 1
try:
c = a + b
f = open('/yiluo/bin/activate.txt')
except:
print('总之就是有错误')
finally:
print('结束异常')
- 执行代码
总之就是有错误
结束异常
Process finished with exit code 0
-
finally
成功的运行了
# 伊洛Yiluo
a = 2
b = 1
try:
c = a + b
except:
print('总之就是有错误')
finally:
print('结束异常')
- 没有任何的异常执行下,看下
finally
会不会被运行
# 伊洛Yiluo
# https://yiluotalk.com/
结束异常
Process finished with exit code 0
-
finally
成功运行
12.抛出异常
- 如果希望程序执行过程中抛出异常,可以使用
raise
语句
>>> raise NameError('Error ERROR')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: Error ERROR
- 如上抛出了
'Error ERROR'
的异常
欢迎下方【戳一下】【点赞】
Author:伊洛Yiluo
愿你享受每一天,Just Enjoy !