Python5--异常处理

作者: 伊洛的小屋 | 来源:发表于2020-08-24 10:37 被阅读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,exceptfinally 三个关键字
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 !

相关文章

  • Python5--异常处理

    1.异常处理 对于不符合预期的用户操作或数据输入,程序总会出现异常情况 2.Python 常用的异常类 NameE...

  • 同步或异步异常处理

    同步或异步异常处理 同步读取异常处理 异步读取文件异常处理

  • Java 异常

    异常处理机制 异常处理模型:终止模型:当异常发生时,就进入异常处理程序,处理结束并不返回异常发生位置继续执行;恢复...

  • 第十二章:异常处理

    异常处理语法格式: try: ...处理语句 except 异常类型: ...异常处理语句 pytho...

  • Spring MVC 全局统一异常处理(注解方式)

    全局异常处理 对异常处理类增加@ControllerAdvice 增加异常处理方法,使用@ExceptionHan...

  • 异常处理设计文档

    一、异常处理流程说明 在ESB处理过程中,若发生异常,将进入异常流程的处理。一个异常处理流程大致如下: ESB处理...

  • Java异常处理机制

    什么是异常处理机制: 异常处理机制: 让程序发生异常时,按照代码预先设定的异常处理逻辑,针对性地处理异常,让程序尽...

  • ASP .NET Core Web API_05_异常处理

    默认异常处理 自定义异常处理

  • springboot 异常捕获和处理

    springboot 异常捕获和处理 异常捕获处理

  • NDK开发---C++学习(七):异常

    前言 C++的异常处理机制能够将异常检测与异常处理分离开来,当异常发生时,它能自动调用异常处理程序进行错误处理。把...

网友评论

    本文标题:Python5--异常处理

    本文链接:https://www.haomeiwen.com/subject/bwxjlktx.html