py 的 第 20 天
---恢复内容开始---
异常处理
indexerror [] [1]
keyerror{} ['key']
EODError pickle.load()
filenotfounderror open('aa')
modulenotfounderror imoprt aaaaaaaaaaaa
valueerror int ('adada)
语法错误应该在写代码的时候就规避掉
例如读取的字符串有问题,就是一些弱智问题,从一开始就该规避掉
最容易出异常的时候是你要处理的内容不确定的时候
1.有用户参与
2.有外界数据接入:从文件中读 从网络上获取
多行报错是为什么
在嵌套调用的过程中,内部代码出了问题,外部所有的调用的地方都成为报错追溯信息的一部分
解决方法从下往上找,先找到写的代码,出错的那一行 , 看看是否能看出问题 , 把最后一行的错误类型和详细提示,去百度翻译
try: 和 except是一起使用的,在他俩中间的错误代码,都会被except处理
# 多分支
# l = ['login','register']
# for num,i in enumerate(l,1):
# print(num,i)
# try:
# num = int(input('num >>>'))
# print(l[num - 1])
# except ValueError :
# # 从上向下报错的代码只要找到一个和报错类型相符的分支就执行这个分支中的代码,然后直接退出分支
# print('请输入一个数字')
# except IndexError :
# # 如果找不到能处理和报错类型相同的分支,会一直往下走,最后还是没有找到就会报错
# print('只能输入1或2')
多分支合并
# l = ['login','register']
# for num,i in enumerate(l,1):
# print(num,i)
#
# try:
# num = int(input('num >>>'))
# print(l[num - 1])
# except (ValueError,IndexError) : 就是把2个错误类型放到一个except里
# print('您输入的内容不合法')
# 万能异常
# def buy():
# print('buy')
# name
#
# def back():
# print('back')
# [][1]
#
# def show():
# print('show')
# 1/0
#
# def main():
# l = [('购物',buy),('退货',back),('查看订单',show)]
# while True:
# for num,i in enumerate(l,1):
# print(num,i[0])
# num = int(input('num >>>'))
# print(l[num - 1])
# try:
# func = l[num - 1][1]
# func()
# except Exception: except exceptiom 这里无论有多少错误,都是执行下一句话
# print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
#
# main()
# as语法 能够将具体错误信息打印出来
其他代码同上
# try:
# func = l[num - 1][1]
# func()
# except Exception as e: 这个e是个变量,随便写什么都行
# print(e) 这个e会把这个错误类型给打印出来
# #print(e.args,e.__traceback__.tb_lineno,e.__traceback__.tb_frame) 这些都是多出来的 例如几行的代码错误
# print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
#
# main()
# 万能异常,相当于except Exception
# try:
# name
# [][1]
# int('aaa')
# except:
# print(123)
多分之 异常处理 , 这个就是把万能异常处理分开一下,可以自定义提示?简单真么说吧,上面的一定要可单独定义某些异常,下面的才是万能异常处理
# try:
# num = int(input('num >>>'))
# print(l[num - 1])
# func = l[num - 1][1]
# func()
# except (ValueError,IndexError) :
# print('您输入的内容不合法')
# except Exception as e:
# print(e)
# #print(e.args,e.__traceback__.tb_lineno,e.__traceback__.tb_frame)
# print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
# main()
先来针对性处理,再来通用性处理
# else分支
# try:
# print('aaa') # 给某某某发邮件
# # name
# # [][1]
# # 1/0
# except NameError: # 网络不稳定,邮箱地址错误
# print('name error')
# except IndexError:
# print('index error')
# except Exception as e:
# print('Exception')
# else: # 当try中的代码不发生异常的时候 走else分支 如果发送成功了 进行一些处理
# print('else') 只有当上面没有任何错误 try中文件正常执行了之后,才走这句话
接下来讲的是finally
# try:
# f = open('www','w')
# f.read()
# finally: # 即使遇到报错,程序结束,也会先执行finally中的代码,然后再结束程序
# f.close()
# print('文件已经关闭了')
# finally用来回收一些操作系统的资源 : 数据库连接 打开的文件句柄 网络连接
# 异常处理的几种情况
# try ... except
# try ... except ... else else绝不能单连try
# try ... finally finally可以单带try 但是finally只能再最后
# try ... except ... finally
# try ... except ... else ... finally finally 永远是在最后的 所有不管有错误没错误的都执行完再执行他,一般用于系统资源回收,数据库连接,打开的文件句柄,网络连接
# 主动抛出异常 : 是给其他开发者用的
# raise ValueError
# raise ValueError('你写的不对')
# django是别人写的程序 框架 --> 程序员用 这个没什么卵用,听老师说这个得是你牛逼了,自己开发软件了,给程序员用才行
断言也是什么卵用没有,平时应该用的上啊 老师说除了看源码,都不会用,
# 断言 - 语法
# assert 1==2 # 只能接受一个布尔值 False
# assert 1==1 # 只能接受一个布尔值 False
# print(123456)
# if 1 == int(input()):
# pass
# else:
# raise AssertionError
异常处理的忠告 如果程序没有完全处理完,千万不要在最外加异常处理
---恢复内容结束---
转载于:https://www.cnblogs.com/Mrszhao/p/9533689.html
py 的 第 20 天相关推荐
- ubuntu 16.04.7通过get-pip.py安装pip 20.3.4
ubuntu 16.04.7通过get-pip.py安装基于python 2.7的pip 20.3.4 为何要用这种方式安装pip? 因为ubuntu 16.04.7自带的pip是pip 8,在202 ...
- python对文件的_python对文件的读写
文件 File 什么是文件 文件是用于数据存储和单位 文件通常用来长期存储数据 文件中的数据是以字节为单位进行顺序存储的 文件的操作流程: 1. 打开文件 2. 读/写文件 3. 关闭文件 注: 任何 ...
- Python--1 初识
1.1 Python简介 Python[1] (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,python的创始人为吉多·范罗苏姆(Gu ...
- python 获取脚本所在目录
pythonsys.path__file__abspathrealpath 平时写python经常会想获得脚本所在的目录,例如有个文件跟脚本文件放在一个相对的目录位置,那就可以通过脚本文件的目录找到 ...
- Win10环境Tensorflow-GPU13.1/JupyterNotebook的安装
参考 : Anaconda Tensorflow GPU 版本的安装问题 https://blog.csdn.net/u010977034/article/details/62038698 Windo ...
- Python 学习之二: module, import 与 import as
2019独角兽企业重金招聘Python工程师标准>>> http://blog.csdn.net/fanshengchong/article/details/7039692 Pyth ...
- python django 的启动脚本
2019独角兽企业重金招聘Python工程师标准>>> <!-- lang: shell -->#!/bin/bash# Replace these three sett ...
- Tensorflow【实战Google深度学习框架】TFLearn大宝剑
文章目录 1.前言 2.安装TFLearn(win10) 3.使用TFLearn实现线性回归 1.前言 如果你了解过TensorFlow框架,会发现这个深度学习库需要我们自己定义所有的计算节点,通过将 ...
- python中文解释-python注释中文
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 4.python代码注释最后更新于:2019-10-05 14:25:4 ...
最新文章
- PostgreSQL — 数据库实例只读锁定
- 用了5年的Git,你竟然还不晓得它的实现原理!
- 计算字符串的实际长度
- ubuntu中mysql操作_uBuntu下安装MySql,及mySql操作!
- 零售业去“O”,不可逆之变
- 小米小爱蓝牙音箱_小米小爱蓝牙音箱——值否?
- python:将时间戳转换成格式化日期
- 自动生成四则运算题目
- MyEclipse发布项目更改项目名
- 【iCore4 双核心板_ARM】例程三十三:SD_IAP_ARM实验——更新升级STM32
- 拓端tecdat|python爬虫进行Web抓取LDA主题语义数据分析报告
- IDEA启动Tomcat时 , 报错提示:this web application instance has been stopped already
- B站收藏夹快速导出详细步骤
- sus补丁分发,局域网自动打补丁服务的架设过程
- 蓝桥杯:座次问题(枚举法 回溯) java
- [附源码]java毕业设计高校学生疫情防控信息管理系统
- 史上最全面Java面试汇总(面试题+答案)
- 精通 Python OpenCV4:第二部分
- 经典算法电话号码的字母组合
- 什么是 95计费方式