回顾

在Python进阶记录之基础篇(二十)中,我们介绍了Python面向对象中的类方法和静态方法,以及类中拥有特殊功能的魔法函数。需要重点掌握类方法和静态方法的概念和基本用法,理解魔法函数的作用冰女熟练使用常用魔法函数来定制类。今天我们讲一下Python中的语法错误和异常以及对异常的处理。

语法错误

在我们刚开始学习Python时,由于不够熟悉,经常会出现一些语法错误。

语法错误

Python中的语法错误也被称为解析错误,是初学者很容易碰到的错误。好消息是运行后Python语法分析器能准确指出出错的那一行,并且在最先找到的错误的位置标记上一个小小的箭头,从而让我们快速定位语法错误。

上述代码中,我们的if条件语句后少了个冒号,运行后看到报错,我们就能意识到错误所在,从而修正这个语法错误。

异常

有时候,虽然我们的Python程序没有语法错误,但在运行它的时候,我们会发现程序也有可能报错。这种情况下,通常是程序发生了异常。

程序异常

上述代码中,从语法角度讲,程序是没有问题的。但是可以看到,运行还是报错了,原因是我们把0当做了除数,使Python抛出了一个ZeroDivisionError的异常错误。像这种运行时被检测到的错误就叫做异常。

我们再来看另外一个例子,我们知道,Python中是不允许字符串类型和数字类型进行运算的,现在我们试图使用字符串2和整数2相加。

程序异常

如我们所料,Python再次抛出异常,并且异常错误为TypeError。事实上,与大多数编程语言类似,Python也有各种不同类型的异常,例如我们例子中的ZeroDivisionError和TypeError就是常见的两种异常,并且大多数的异常都不会直接被程序处理,而是以错误信息的形式展现在运行结果中,同时会终止程序的运行。

异常处理

与语法错误不同的是,我们可以捕捉异常。当程序发生异常的时候,我们捕捉到异常让程序暂停当前执行的代码并跳转至错误处理代码,处理结束再继续程序的运行,从而规避程序因发生异常而导致终止。

Python中通过“try...except...finally...”语句块来处理异常,基本格式如下:

try:

可能发生异常的代码

except:

处理异常的代码

finally(可省略):

无论异常是否发生都会执行的代码

现在,我们通过捕捉异常来处理之前发生异常的两个程序。

异常的简单处理

上述代码中,我们分别通过捕捉ZeroDivisionError和TypeError这两个异常顺利修复了之前报错的两个程序。

下面我们总结一下“try...except...finally...”语句块的执行方式:

1、执行try中的子句。

2、如果没有异常发生,则跳过except子句,直接执行后续代码。

3、如果在执行try子句的过程中发生了异常,那么try子句中发生异常代码的那行开始余下的代码将不再执行。如果异常的类型和except的异常名称相符,那么对应的except子句将被执行,执行完后再执行后续代码。

4、如果异常没有与任何的except匹配,那么这个异常就会被抛出,程序终止。

一个try语句可能包含多个except子句,分别来处理不同类型的异常,但最多只有一个分支会被执行。

一个try多个except子句

上述代码中,我们同时捕捉了ZeroDivisionError和TypeError这两个异常,这样,程序就可以同时处理0为除数或类型错误时的情况了。

对于多异常处理,你也可以写成元组的形式。

except (ZeroDivisionError, TypeError):

pass

但是这种写法如果要处理不同的异常,你需要在except子句中先判断异常类型再做相应处理。

在执行程序的过程中,我们有时也会碰到一些意想不到的异常,或者不知道异常名称,因此,我们通常会将try语句的最后一个except子句忽略异常的名称,将它作为通配符使用。

except异常通配符

除此之外,“try...except...finally...”语句块还有一个可选的else子句,与finally子句不同的是,这个子句只会在try子句没有发生任何异常的时候执行。

else子句

上述代码中,第一段“try...except...finally...”语句块发生异常,不会走else子句,而第二段“try...except...finally...”语句块没有发生异常,因此会走else子句。

总结

以上内容介绍了Python中的语法错误和异常以及对异常的处理方法,需要重点掌握语法错误和异常的基本概念,熟练使用“try...except...finally...”语句块处理异常。感谢大家的支持与关注,欢迎一起学习交流~

python中语法错误-Python语法错误与异常及异常处理方法相关推荐

  1. python中exception类的_Python自定义一个异常类的方法

    如何实现自定义一个异常 python内置了许多异常类,为编写代码划定红线,才使调试代码时能及时发现错误.那么我们编写一个模块也可以为使用此模块者划定红线,来约束使用者可用哪些数据,这就需要自定义异常类 ...

  2. python中常见的几种错误

    python中常见的几种错误: 1.end前面一定加逗号 2.命令输入错误 3.冒号中英文切换 4.命令缩进错误 5.等于号要双等于,否则一个等于号是赋值 6.命令之间正确搭配

  3. 深入讨论Python中的序列切片语法

    本小节深入探讨Python中的序列切片语法. 切片-slicing可以获取序列的子序列(列表,字符串-): numbers = [x for x in range(10)] print("n ...

  4. 正确姿势避坑 Python 中的6个典型错误

    点击关注我哦 一篇文章带你使用正确姿势避坑 Python 中的6个典型错误 Python是一种高级的动态脚本语言.它易于使用的特性使得它非常流行,并且在最近几年得到了扩展.易用性也从易滥用开始.我们列 ...

  5. 关于python中的复数类型、下列说法错误的是_关于 Python中的复数,下列说法错误的是( )_学小易找答案...

    [单选题]下列关于运算符优先级的描述中,错误的是 . [判断题]Java 语言中定义符号常量使用final关键字.( ) [判断题]捕获异常时try语句后面通常跟有一个或多个catch()方法用来处理 ...

  6. python 中 try、except、finally的用法(异常处理)

    Python中包含错误和异常两种情况①,错误主要是常见的语法错误SyntaxError,在错误提示中会有倒三角箭头的修改指示位置:python中的另外一种错误提醒叫做异常,指的是在语法和表达式上并没有 ...

  7. 在Python中,可以使用try-except语句来处理异常。

    当代码块中发生错误时,程序会立即跳转到except块中,从而避免程序因错误而中断. 下面是一个简单的例子,演示了如何在Python中使用try-except语句处理异常: try:# 这里是可能出现异 ...

  8. Python中NaN、nan和NAN的区别及使用方法

    Python中NaN.nan和NAN的区别及使用方法 Python中的NaN(Not a Number)是一个特殊的浮点数值,用于表示非数值型计算结果或无限大的运算结果,常用于科学计算.数据分析等领域 ...

  9. python中json与str转换和出现KeyError的解决方法

    python中json与str转换和出现KeyError的解决方法 json转str str转json KeyError的解决方法 json转str json格式的数据其实就是dict类型的数据,如图 ...

  10. python while if 区别_对python中for、if、while的区别与比较方法

    如下所示: if应用举例: #if 若条件成立,只执行一次 #if 条件:如果条件成立,执行条件后的代码块内容,不成立,直接跳过代码块 #判断如果年龄age小于18,输出未成年 #=一个等号表示赋值的 ...

最新文章

  1. 计算机考研专业课资料百度云,2020年考研专业课【初试】资料清单
  2. 伪代码的简单例子_使用策略+工厂模式彻底干掉代码中的if else!
  3. R内存扩展 win7内存扩展
  4. 优先队列priority_queue自定义比较函数
  5. 将要发布的开源CCOA的照片一览
  6. Java后端开发工程师学习笔记【狂神说Java笔记】
  7. 联通pt952g 光猫管理员密码获取
  8. 依托智慧警务 打造城市公共安全防控新模式
  9. android设计计算等级程序,Android自定义View仿QQ等级天数进度
  10. 移动硬盘损坏怎么恢复?看完再也不怕丢失数据
  11. F - Shifting String(置换的阶+思维)
  12. 丢番图生平编程java_丢番图与麦乐鸡购买问题
  13. [数据科学]000.我为什么当数据科学家
  14. 树莓派研究笔记(7)-- lakka 《仙剑奇侠传》的完美移植
  15. 从三室心脏MRI影像检测主动脉瓣病变
  16. Beetl2.7.13 中文文档
  17. asp.net1036-物流管理信息系统#毕业设计
  18. 移动端 vue 个人组件库
  19. 轮播图自动滚动 无缝连接 js
  20. 易语言学习笔记——基础篇

热门文章

  1. window7电脑声音图标不见了
  2. 上号神器扫码教程,常见问题解答
  3. 【把视频逐帧转换成图片】
  4. 无公网服务器(ip)做内网穿透
  5. mysql root密码过期了_MYSQL 密码过期解决办法
  6. 金庸小说数据化中的部分题目答案
  7. 使用计算机食谱编制,1食谱编制——营养成分计算法.ppt
  8. 图文并茂——从Kubernetes的诞生背景到什么是Kubernetes, 带你深度解析Kubernetes
  9. 自动检测图像中的圆形或圆形对象
  10. 【原理篇】qBittorrent下载+转种Transmission快校版+IYUU Plus辅种教程