导航:

python的异常分为两种,1)、语法错误,在python解释器的语法检测中不通过不能运行代码    2)、异常,python程序运行期检测到的错误被称为异常。在没有做异常处理时,将终止程序并提示异常信息,如:①字符串转换为数字时的类型转换异常,②文件读取时的文件不存在异常,③网络链接时主机不可达异常···等。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。毕竟谁也不希望用着的程序突然的就崩了

1、语法错误

python的语法错误是很多初学者经常遇到的一个问题,这类错误比较低级,只要多敲几遍代码就可以减少这样的错误

1 >>> ifTrur2 File "", line 1

3 ifTrur4 ^

5 SyntaxError: invalid syntax6 >>> print("as"))7 File "", line 1

8 print("as"))9 ^

10 SyntaxError: invalid syntax

如:出现这样的错误就是语法错误,第1行结尾if语句缺少 ":",第6行结尾多了 ")"

2、异常

1)运行期检测到的错误被称为异常,python的语法检测无法检查这样的错误。

1 >>> int("aa")2 Traceback (most recent call last):3 File "", line 1, in

4 ValueError: invalid literal for int() with base 10: 'aa'

5 >>> f = open("aaa.txt","r")6 Traceback (most recent call last):7 File "", line 1, in

8 FileNotFoundError: [Errno 2] No such file or directory: 'aaa.txt'

其中第1行,第5行都是出现异常的地方,看一下异常的输出信息,如下图

2)python的标准异常类

BaseException 为所有异常的基类,Exception 为常规错误的基类

3、异常处理

为了提高程序的健壮性,不让程序出现异常时出现崩溃的情况,在必要时需要进行异常处理

1)try-except:语句

①、最简单的异常处理语句如下,当try的语句块中有异常出现时,下边的的语句将不再执行(第3行),异常被except捕获,执行except中的语句块后继续向下执行程序(如第6行)。注:except后边不跟异常的类型,默认捕捉所有的异常

1 try:2 int("aaa")3 print("---aaa---")4 except:5 print("出现异常-->英文字母不能转换为数字")6 print("----------")7

8

9 #输出结果

10 出现异常-->英文字母不能转换为数字11 ----------

②、多分支异常,当我们需要捕获不同的异常时可以用多个except来实现,需要获取异常的信息可通过as 变量名得到异常的对象,如第7行

1 try:2 nu = int("100")3 print("转换后的值nu:", nu)4 i = 1 /05 exceptValueError:6 print("出现异常-->英文字母不能转换为数字")7 except ZeroDivisionError as e: #通过 as 变量名 获取异常的对象

8 print("出现异常-->除数不能为零")9 print("异常的提示信息-->", e)10 except:11 pass

12 print("----------")13

14

15 #输出结果

16 转换后的值nu: 100

17 出现异常-->除数不能为零18 异常的提示信息-->division by zero19 ----------

③、当我们需要将多个异常按相同的处理方式可以使用  except (ValueError, [ZeroDivisionError [, NameError]]):

1 try:2 i = 1 /03 nu = int("aa")4 except(ValueError, ZeroDivisionError) as e:5 print(e)6 except:7 pass

8 print("----------")9

10

11 #输出结果

12 division by zero13 ----------

2)try-except-else-finally 语句

①、当try-except-else-finally中出现了finally语句,不管是否出现异常finally语句块中的语句一定会执行,而else中的语句只有不出现异常是才会执行

出现异常时try-except-else-finally如下

1 try:2 i = 1 /03 print("没有出现异常i值", i)4 exceptException as e:5 print("出现异常-->", e)6 else:7 print("没有出现异常-->执行else")8 finally:9 print("不管是否出现异常,这里的语句一定会被执行")10

11

12 #输出结果

13 出现异常-->division by zero14 不管是否出现异常,这里的语句一定会被执行

没有出现异常时try-except-else-finally如下

1 try:2 i = 1 / 1

3 print("没有出现异常i值", i)4 exceptException as e:5 print("出现异常-->", e)6 else:7 print("没有出现异常-->执行else")8 finally:9 print("不管是否出现异常,这里的语句一定会被执行")10

11

12 #输出结果

13 没有出现异常i值 1.0

14 没有出现异常-->执行else15 不管是否出现异常,这里的语句一定会被执行

②、try-except-else-finally还可以拆开使用,有三种形式 1)try-except-finally   2)try-except-else    3)try-finally。  这里就不展示代码了

4、异常的传递

在发生异常的语句中没有处理异常的语句,异常将向上层传递,直到遇到处理异常的语句,或python解释器终止程序

1 deftest2():2 int("aa")3

4 deftest1():5 test2()6

7 try:8 test1()9 exceptException as e:10 print(e)11 print("-----------")12

13

14 #输出结果

15 invalid literal for int() with base 10: 'aa'

16 -----------

如上test2中第2行出现异常,将向第5行调用test2的语句处传递,这里依旧没有异常处理语句,将继续往上层传递到第8行处被except捕获

5、抛出异常 raise

1)抛出python已定义的异常

通过raise 异常类型即可抛出一个异常,抛出的异常也会被except捕获到。如下边第4行

1 age = 500

2 try:3 if age < 0 or age > 200:4 raise ValueError("age范围0-200")5 print("age", age)6 exceptValueError as e:7 print("出现异常-->", e)8

9

10 #输出结果

11 出现异常--> age范围0-200

2)抛出自定义异常

抛出自定义异常首先得有个自定义的异常类,注:自定义的异常必须直接或间接的继承Exception基类

1 class MyException(Exception): #自定义异常类

2 def __init__(self, msg):3 self.msg =msg4

5

6 age = 500

7 try:8 if age < 0 or age > 200:9 raise MyException("age范围0-200") #抛出自定义异常

10 print("age", age)11 exceptMyException as e:12 print("出现异常-->", e)13

14

15 #输出结果

16 出现异常--> age范围0-200

当然自定义异常类也可以拥有许多的功能,就得看需求添加啦

6、在异常处理中抛出异常

有某需求:当捕获到异常时处理完后想继续抛出异常.....

在except中用raise可以抛出当前异常

1 try:2 i = 1 / 0 #异常的语句

3 exceptException as e:4 print("出现异常-->", e)5 raise #处理完后继续抛出异常,raise表示抛出当前异常

6 print("-------------")7

8

9 #输出结果

10 出现异常-->division by zero11 Traceback (most recent call last):12 File "", line 2, in

13 i = 1 /014 ZeroDivisionError: division by zero

注:异常处理尽量在需要的时候再使用,使用太多会影响代码的可读性

python中异常语句_python 异常相关推荐

  1. python中所有的异常类都是谁的子类_Python中所有的异常类都是____的子类。

    [简答题]假设成年人的体重和身高存在此种关系: 身高(厘米)-100 =标准体重(千克) 如果一个人的体重与其标准体重的差值在正负5%之间,显示"体重正常",其他则显示" ...

  2. 在python中用于触发异常的是_下列选项中,用于触发异常的是()。 (3.0分)_学小易找答案...

    [填空题]当使用序列中不存在的____时,会引发IndexError异常. (3.0分) [简答题]2017国考地市级: (三)假如你是某报社记者,请根据"给定资料3",以&quo ...

  3. 【Python面试】 列举Python中的标准异常类?

    往期面试题: 说说Python变量.函数.类的命名规则? 说说Python可变与不可变数据类型? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 说说Python模块主要分哪三 ...

  4. python中exception类的_面试题 | 列举几个Python中的标准异常类?

    [摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...

  5. 在python中、如果异常并未被处理或捕捉_python异常处理(一)

    Python的异常处理能力是很强大的,可向用户准确反馈出错信息.在Python中,异常也是对象,可对它进行操作.所有异常都是基类Exception的成员.所有异常都从基类Exception继承,而且都 ...

  6. 在python中、如果异常并未被处理或捕捉_Python异常处理总结

    本文较为详细的罗列了Python常见的异常处理,供大家参考,具体如下: 1. 抛出异常和自定义异常 Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常.如果 ...

  7. python中常见的异常

    python中的异常 一.常见的异常 ZeroDivision 除数为0 IndexError 索引值超出范围(取列表或字符串中元素可能出现) KeyError 关键字在字典中不存在 NameErro ...

  8. python自动退出程序_python异常退出

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 异常是一个事件,该事件会在程序执行过程中发生,将影响程序的正常执行. 一般情况下 ...

  9. python中if错误-Python中错误和异常

    第1章 概念 错误 语法错误:代码不符合解释器或编译器的语法 逻辑错误:不完整或不合法的输入或者计算出现问题 异常:代码执行过程中,出现问题导致程序无法执行 程序遇到逻辑或算法问题 运行过程中计算机错 ...

最新文章

  1. SpringBoot的日志管理(输出级别,输出到文件)
  2. 结构体成员赋值-标记化结构体初始化语法-结构体成员前面加小数点
  3. 基于Vue和axios的音乐播放器——悦听音乐效果展示及代码分享
  4. C++笔记-仿函数(functor)
  5. 循环,数组,函数作业
  6. 转载牛人的ASP.NET Cookies简单应用 记住用户名和密码
  7. try catch 处理异常太烦人了,我已经不用了
  8. C#生成Excel出现8000401a的错误的另一种解决办法。
  9. matlab正交表,正交表的构造方法及Matlab实现
  10. 面试官问我Python日历模块,我直接用Flask开发Web版日历应用给他
  11. 计算机内存128毫升,内存128.1M的微信怎么可能只能聊天!
  12. temp的作用c语言,temp的使用
  13. 数字证书理解(CA证书签名原理)
  14. 《剑破武林》用户注册协议
  15. Google 创始人
  16. spring boot大学体育赛事管理系统 毕业设计-附源码180923
  17. 2015CDAS中国数据分析师行业峰会:R语言量化投资数据分析应用
  18. realme手机配什么蓝牙耳机?realme蓝牙耳机推荐
  19. Model Adaption: Unsupervised Domain Adaption Without Source Data
  20. 2022.04.21【日常维护】|服务器存储清理浅谈

热门文章

  1. JAVA的jdk1.8中文文档
  2. uni-app开发小程序,笔记记录6 商品详情页
  3. 用python让excel飞起来 pdf_讯飞会议宝S8体验:以后开会请速记的钱,可以省了
  4. Python:同花顺全数据接口
  5. 2星|《反焦虑思维》:冥想、遛狗、散步、打哈欠等可以缓解焦虑
  6. 云计算360度 微软专家纵论产业变革
  7. 根据标注点坐标范围计算显示缩放级别zoom自适应显示地图
  8. 头文件防卫式声明/引用/static/extern/
  9. mysql3306端口被占用无法终止_Mysql3306端口被占用无法启动解决办法
  10. 苹果MACOS电脑MAC地址修改的方法