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异常处理及常见报错解决相关推荐

  1. React 开发常见报错解决方法

    React 开发常见报错解决方法 参考文章: (1)React 开发常见报错解决方法 (2)https://www.cnblogs.com/wx1993/p/7364088.html (3)https ...

  2. k8s常见报错解决--持续更新

    k8s 常见报错处理 [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver ...

  3. python+appium,常见报错与解决方法

    分享自己用python+appium写移动端自动化脚本出现的报错及解决方法,持续更新,希望对和我一样刚开始学习的同学有所帮助,加油ヾ(◍°∇°◍)ノ゙ 报错一: 关键字:Could not find ...

  4. python redis 集群_python 连接redis集群 ,常见报错解决。

    背景:工作需要,处理的数据需要通过redis进行缓存处理,之后方便统计分析. 目标:python连接redis进行读取&写入. 连接 redis 与 redis集群 是不同的 !!! 一.连接 ...

  5. mysql常见报错解决办法

    2019独角兽企业重金招聘Python工程师标准>>> mysql8.0版本 报错:Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does no ...

  6. ChatGPT常见报错解决:回答不完整. 网络错误. Something went wrong. NetworkError when attempting to fetch resources.

    文章目录 1 可以解决的报错 2 解决方案 2.1 安装Tampermonkey 2.2 添加脚本 2.3 参数设置 1 可以解决的报错 目前已确定可以完美解决如下报错 Something went ...

  7. 【JavaWeb】eclipse中常见报错解决汇总

    报错一:servlet cannot be resolved to a type 解决方式:添加servlet-api.jar(tomcat所在路径的lib包中)即可 步骤: 项目名-->右键- ...

  8. pycharm常见报错解决方法(1)

    1.运行程序提示:modulenotfounderrir: no module named 'importlib_metadata'.... 出现大致此信息报错是因为没有或导入包出错,解决方法: 进入 ...

  9. Java 如何串口通信以及常见报错解决

    文章目录 一.Java 串口通信部署 准备 部署 1. 配置 Java 环境 2. 新建项目,引入依赖. 3. 代码(网上荡的) 运行 二.Java 串口通信报错 1. JDK 有关错误 2. dll ...

最新文章

  1. [JVM-翻译]揭开java.lang.OutOfMemoryError面纱之一
  2. 改造HINT的输出方式
  3. 验证E-mail是否正确
  4. Spring整合Hibernate
  5. protel PCB布线精华文章
  6. 普通类和抽象类有哪些区别?
  7. IOS UITextView自适应高度
  8. ajax跨浏览器初始化,使用Ajax的jQuery localStorage的跨浏览器
  9. 【Dexclassloader】学习
  10. 喜茶多名员工与外卖小哥互殴 喜茶官方:辞退!
  11. python爬虫爬取豆瓣电影
  12. 枚举类比较和工具方法
  13. 以太网交换机erps学习记录
  14. 联想计计算机电源管理,联想电源管理软件energy manag
  15. 【Android Studio使用教程2】Android Studio创建项目
  16. Account-login
  17. CSDN写漂亮博客的技巧--改字体大小颜色、插入多列表格、字体高亮等
  18. Docker容器添加映射端口
  19. 如何让图片放大不模糊?
  20. Linuxprobe-28期-第二节课

热门文章

  1. go mod报错at revision v0.0.6: unknown revision v0.0.6
  2. 百度地图标点实现vue
  3. docker与虚拟机的对比分析
  4. 华为OD机试 - 货币单位换算(Java JS Python)
  5. matlab的信号处理dBc,数字信号处理matlab报告
  6. pyqtgraph基础入门(一):使用qtdesigner 提升组件
  7. CSS 的“层”峦“叠”翠 - 一文掌握z-index用法​​​​​​​
  8. 祝福天下母亲母亲节快乐!
  9. 强力载荷能力,沃飞长空工业型无人机适配各行各业
  10. Citespace 图谱解读笔记