Python异常处理及常见报错解决
Python的异常处理
Python的异常处理try的基本用法。
方法一 :try..except
把通常的语句放在 try 代码块中,将错误处理器代码放置在 except 代码块中。
try: # 尝试运行以下代码result = 4 / 0print(result)
except: # 捕获到异常执行以下代码print('程序异常')
运行结果:程序异常
通过上面可以看到,如果没有出现异常,它只运行try下的代码;出现异常,它就运行了except的代码。
如果明确知道报的的是ZeroDivisionError异常的话,那可以这样写:
try:x = 4 / 0print(x)
except ZeroDivisionError: # 捕获到ZeroDivisionError,执行代码print('不能除零')
except: # 如果出现其它错误,执行代码print('其它错误')
运行结果:不能除零
如果想看捕获的异常详细信息,可以:
try:x = 4 / 0print(x)
except ZeroDivisionError as ze: # 捕获到ZeroDivisionError,执行代码print('出现异常',ze)
运行结果:出现异常 division by zero
方法二:try...else语句
else语句:在try语句中的代码没有任何异常的情况下,再执行else语句下的代码。
try:x = 4 / 0print(x)
except ZeroDivisionError: # 捕获到ZeroDivisionError,执行代码print('不能除零')
except: # 出现其它错误,执行代码print('其它错误')
else: # 如果try执行没有出现异常,再执行else中的代码print('没有异常')
运行结果:不能除零
方法五:try...finally语句
finally语句:不管上面有没有异常,都要执行finally语句的代码,通常是做一些必须要释放的资源的代码,最典型的就是文件操作和数据库操作。
f = open('data.txt')
try:print(f.read())
except:print('文件操作错误') # 文件始终是打开的,可能后面再读取的时候就会遇到错误,这种情况下适合用finally
finally: # 不管上面有没有出现异常,都要执行finally下的代码f.close()
运行结果:文件操作错误
方法六:抛出异常
def method():raise NotImplementedError('该方法代码还未实现')# 设设定默认的报错
method()
运行结果:
Traceback (most recent call last):File "D:/python/lianxi/add.py", line 17, in <module>method()File "D:/python/lianxi/add.py", line 15, in methodraise NotImplementedError('该方法代码还未实现')
NotImplementedError: 该方法代码还未实现
raise语句是抛出一个指定的异常。
Python调试常见报错及解决
问题一:TabError: inconsistent use of tabs and spaces in indentation
C:\Users\tl>python C:\Users\tl\Desktop\test.pyFile "C:\Users\tl\Desktop\test.py", line 7num1 = 4^
TabError: inconsistent use of tabs and spaces in indentation
直接定义值的方式不正确
问题二:IndentationError: unexpected indent
C:\Users\tl>python C:\Users\tl\Desktop\test.pyFile "C:\Users\tl\Desktop\test.py", line 11print compareNum^
IndentationError: unexpected indent
该行缩进不正确
问题三:SyntaxError: Missing parentheses in call to 'print'. Did you mean print(compareNum)?
C:\Users\tl>python C:\Users\tl\Desktop\test.pyFile "C:\Users\tl\Desktop\test.py", line 11print compareNum^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(compareNum)?
Print后面没有加括号
问题四:SyntaxError: Non-ASCII character '\xe4' in file
/Users/alice/venv/bin/python /Users/alice/PycharmProjects/first/venv/tensorflow1.pyFile "/Users/alice/PycharmProjects/first/venv/tensorflow1.py", line 5
SyntaxError: Non-ASCII character '\xe4' in file /Users/alice/PycharmProjects/first/venv/tensorflow1.py on line 5, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for detailsProcess finished with exit code 1
使用了中文编码或者字符,解决方法:在Python源文件的最开始一行,加入一句:# coding=UTF-8(等号换为”:“也可以)
问题五:SyntaxError: EOL while scanning string literal
File "/Users/alice/PycharmProjects/untitled/createdataconnectsql.py", line 17sql = "SELECT * FROM idCard^
SyntaxError: EOL while scanning string literal
idCard后面少了引号
问题六:SyntaxError: unexpected EOF while parsing
File "/Users/alice/PycharmProjects/untitled/createdataconnectsql.py", line 35^
SyntaxError: unexpected EOF while parsing
少了部分函数,检查代码发现原try函数后面少了except,加上后即可
try:# 执行SQL语句cursor.execute(sql)# 获取所有记录列表results = cursor.fetchall()for row in results:fname = row[0]lname = row[1]age = row[2]sex = row[3]income = row[4]# 打印结果print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s")
except:print ("Error: unable to fecth data")
问题七:TypeError: bad operand type for unary +: 'str'
检查代码发现是因为/的位置不对,放在了'的外面
image.save('/Users/alice/Documents/CreatFontDemo/photo'+row[0]+/'等比例缩小.JPG', 'jpeg')
修改为'里面就不报错了
image.save('/Users/alice/Documents/CreatFontDemo/photo'+row[0]+'/等比例缩小.JPG', 'jpeg')
问题八:TypeError: %c requires int or char
TypeError: %d format: a number is required, not str
Traceback (most recent call last):File "/Users/litan/PycharmProjects/untitled2/test.py", line 3, in <module>print ('%s and %c are fruit! '%(a,b) )
TypeError: %c requires int or char
或者:
Traceback (most recent call last):File "/Users/litan/PycharmProjects/untitled2/test.py", line 3, in <module>print ('%s and %d are fruit! '%(a,b) )
TypeError: %d format: a number is required, not str
检查代码发现是因为变量引用的方式不对,%c 改成 %s就可以了
a="apple"
b="banana"
print ('%s and %s are fruit! '%(a,b) )
问题九:TypeError: 'int' object is not subscriptable
Traceback (most recent call last):File "/Users/alice/PycharmProjects/Mypython/renren.py", line 5, in <module>if m[0]==m[-1]:
TypeError: 'int' object is not subscriptable
分析原因是subscriptable表示可以有下标,当不可以有下标的对象比如int使用了下标,就会报错,那么需要将原本的int转化为支持的类型
for m in range(1,10):m="%d" % m# 或者m=str(m)均可if m[0]==m[-1]:print(m)
问题十:requests.exceptions.ConnectionError: HTTPConnectionPool(host='test.com', port=80)
这个可能是服务器或网络不通,可以尝试看浏览器里是否可访问
Python异常处理及常见报错解决相关推荐
- React 开发常见报错解决方法
React 开发常见报错解决方法 参考文章: (1)React 开发常见报错解决方法 (2)https://www.cnblogs.com/wx1993/p/7364088.html (3)https ...
- k8s常见报错解决--持续更新
k8s 常见报错处理 [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver ...
- python+appium,常见报错与解决方法
分享自己用python+appium写移动端自动化脚本出现的报错及解决方法,持续更新,希望对和我一样刚开始学习的同学有所帮助,加油ヾ(◍°∇°◍)ノ゙ 报错一: 关键字:Could not find ...
- python redis 集群_python 连接redis集群 ,常见报错解决。
背景:工作需要,处理的数据需要通过redis进行缓存处理,之后方便统计分析. 目标:python连接redis进行读取&写入. 连接 redis 与 redis集群 是不同的 !!! 一.连接 ...
- mysql常见报错解决办法
2019独角兽企业重金招聘Python工程师标准>>> mysql8.0版本 报错:Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does no ...
- ChatGPT常见报错解决:回答不完整. 网络错误. Something went wrong. NetworkError when attempting to fetch resources.
文章目录 1 可以解决的报错 2 解决方案 2.1 安装Tampermonkey 2.2 添加脚本 2.3 参数设置 1 可以解决的报错 目前已确定可以完美解决如下报错 Something went ...
- 【JavaWeb】eclipse中常见报错解决汇总
报错一:servlet cannot be resolved to a type 解决方式:添加servlet-api.jar(tomcat所在路径的lib包中)即可 步骤: 项目名-->右键- ...
- pycharm常见报错解决方法(1)
1.运行程序提示:modulenotfounderrir: no module named 'importlib_metadata'.... 出现大致此信息报错是因为没有或导入包出错,解决方法: 进入 ...
- Java 如何串口通信以及常见报错解决
文章目录 一.Java 串口通信部署 准备 部署 1. 配置 Java 环境 2. 新建项目,引入依赖. 3. 代码(网上荡的) 运行 二.Java 串口通信报错 1. JDK 有关错误 2. dll ...
最新文章
- [JVM-翻译]揭开java.lang.OutOfMemoryError面纱之一
- 改造HINT的输出方式
- 验证E-mail是否正确
- Spring整合Hibernate
- protel PCB布线精华文章
- 普通类和抽象类有哪些区别?
- IOS UITextView自适应高度
- ajax跨浏览器初始化,使用Ajax的jQuery localStorage的跨浏览器
- 【Dexclassloader】学习
- 喜茶多名员工与外卖小哥互殴 喜茶官方:辞退!
- python爬虫爬取豆瓣电影
- 枚举类比较和工具方法
- 以太网交换机erps学习记录
- 联想计计算机电源管理,联想电源管理软件energy manag
- 【Android Studio使用教程2】Android Studio创建项目
- Account-login
- CSDN写漂亮博客的技巧--改字体大小颜色、插入多列表格、字体高亮等
- Docker容器添加映射端口
- 如何让图片放大不模糊?
- Linuxprobe-28期-第二节课
热门文章
- go mod报错at revision v0.0.6: unknown revision v0.0.6
- 百度地图标点实现vue
- docker与虚拟机的对比分析
- 华为OD机试 - 货币单位换算(Java JS Python)
- matlab的信号处理dBc,数字信号处理matlab报告
- pyqtgraph基础入门(一):使用qtdesigner 提升组件
- CSS 的“层”峦“叠”翠 - 一文掌握z-index用法​​​​​​​
- 祝福天下母亲母亲节快乐!
- 强力载荷能力,沃飞长空工业型无人机适配各行各业
- Citespace 图谱解读笔记