python基础篇——异常


  hello!我是wakeyo_J,每天一个konwledge point,一起学python,让技术无限发散。


异常

  • python基础篇——异常
  • 1. 程序中的问题
    • 1.1 低级语法错误
    • 1.2 中介错误:代码存在隐性错误
    • 1.3 高级错误:软件面对不确定性的异常错误
  • 2. 捕捉异常
    • 2.1 基本异常捕捉语句
    • 2.2 带finally子句的异常处理
    • 2.3 try-except-else 结构
    • 2.4 try-except-else-finally 结构
    • 2.5 捕捉特定异常信息
  • 3. 抛出异常
  • 总结

1. 程序中的问题

1.1 低级语法错误

低级错误纯属语法错误,代码主要在编写、调试阶段就报错。

>>> if True
SyntaxError: invalid syntax
>>>

上述错误是初学时很容易犯的语法错误,True后面缺少冒号(:)。

1.2 中介错误:代码存在隐性错误

隐形错误主要是指代码编写存在逻辑错误或缺陷,当程序满足特定数据处理条件时,报错或给出错误答案。

>>> def print_D(dic):i=0len1=len(dic)while i < len1:print(dic.popitem())    #随机删除并返回一个元素i+=1>>> print_D({1:'a',2:'b'})
(2, 'b')
(1, 'a')

上述代码能够正常运行,但是在实际的程序使用过程中,可能另一个程序员传递一个非字典对象后。

>>> print_D([1,2,3,4])
Traceback (most recent call last):File "<pyshell#11>", line 1, in <module>print_D([1,2,3,4])File "<pyshell#9>", line 5, in print_Dprint(dic.popitem())
AttributeError: 'list' object has no attribute 'popitem'

错误的传递对象导致了正常程序出错,这就是隐性错误。隐性错误的特点是正常情况下程序正常运行,特殊情况下(如边界值没有考虑到,传入数据没有仔细检查类型等)出错。有些隐性错误甚至不报错,而是由结果输出,这是最糟糕的情况。

1.3 高级错误:软件面对不确定性的异常错误

高级错误指不确定性的错误,主要指软件的代码本身没有问题,所输入的数据也能得到控制或保证,而是在运行过程中环境所带来的不确定性异常。如:
(1)软件本身去尝试打开一个文件,而这个文件已经被破坏或独占(独占指一个进程(线程)处理过程,其他进程(线程)无法同步处理,只能等待这个进程(线程)处理完成,其他进程(线程)才能继续操作)。
(2)软件在往数据库插入数据过程中,突然网络中断,导致数据丢失
(3)软件运行硬件出现故障,导致软件无法正常运行等
(4)数据库系统被破坏,软件读写数据报错
(5)软件输入内容过度复杂或存在错误操作,。

2. 捕捉异常

2.1 基本异常捕捉语句

  1. 基本异常捕捉语句语法
try:代码模块1
except:代码模块2

try关键字,表示捕捉异常语句的开始;代码模块1,属于正常需要执行的代码模块;except关键字,用于捕捉异常信息,并可以给出出错信息(默认英文提示)。

(1)先执行try语句,代表捕捉异常机制开始
(2)执行代码模块1,若没有出错,忽略except关键字和代码模块2,代码正常执行完毕
(3)若执行代码模块1过程发生异常现象,则终止代码模块1内剩余代码的执行,转到except处
(4)except关键字捕捉到异常信息,并执行代码模块2(往往给出错误信息提示或做出错后问题处理),异常处理结束

示例

>>> def print_D(dic):i=0try:len1=len(dic)while i < len1:print(dic.popitem())i+=1except:print('传递值类型出错,必须为字典类型!')>>> print_D({1:'a',2:'b'})
(2, 'b')
(1, 'a')
>>> print_D([1,2,3,4])
传递值类型出错,必须为字典类型!        #出错后的正确提示信息

2.2 带finally子句的异常处理

基本格式:

try:代码模块1
except:代码模块2
finally:代码模块3

finally关键字后的代码模块3,运行代码模块1是否出错都会执行的代码功能。

案例 1

>>> try:1/0
except:print('除数不能为0')
finally:print('出现执行结束')#执行结果除数不能为0
出现执行结束
>>>

案例 2

>>> try:1/2
except:print('出书不能为0')
finally:print('出现运行结束')#运行结果
0.5
出现运行结束
>>>

案例 3

import sys
try:1/0
except:print('除数不能为0')sys.exit()
finally:print('程序执行结束')print('我能执行码?')#运行结果
除数不能为0
程序执行结束
>>>

2.3 try-except-else 结构

结构运行过程:程序进入try语句部分,当try语句部分发生异常则进入except语句部分,若不发生异常进入else语句部分。

try:print("正常代码")
except Exception as e:print("将不会输出这句话")
else:print("这句话将被输出")print('-'*30)try:print(1/0)
except Exception as e:print("进入异常处理")
else:print("不会输出")#运行结果
正常代码
这句话将被输出
------------------------------
进入异常处理
>>>

2.4 try-except-else-finally 结构

try:print("没有异常")
except Exception as e:print("不会输出!")
else:print("进入else")
finally:print("必须输出!")print('-'*30)try:print(1/0)
except Exception as e:print("引发异常")
else:print("不会进入else")
finally:print("必须输出!")# 运行结果
没有异常
进入else
必须输出!
------------------------------
引发异常
必须输出!
>>>

2.5 捕捉特定异常信息

3. 抛出异常

python允许程序员自己触发异常,可以通过raise关键字来实现,使用格式:

raise [Exception]

Exception参数可选,其对象如上表所示的Exception类的子类。

示例一:不带参数的触发

>>> raise
Traceback (most recent call last):File "<pyshell#52>", line 1, in <module>raise
RuntimeError: No active exception to reraise
>>>

代码通过raise子句抛出一个没有问题的异常信息。
示例二:带参数的触发

>>> i='1'
>>> if type(i)!=int:raise TypeError('i类型出错!')Traceback (most recent call last):File "<pyshell#57>", line 2, in <module>raise TypeError('i类型出错!')
TypeError: i类型出错!
>>>

总结

  本文属于作者原创,转载请注明出处,不足之处,希望大家能过给予宝贵的意见,如有侵权,请私信。每天一个knowledge point,一起学python,让技术无限发散。

python基础篇——异常相关推荐

  1. python包括哪些部分_第一部分 Python基础篇

    第⼀一部分 Python基础篇 1. 为什什么学习Python? 朋友推荐,比较简单易学,生态圈比较强大 发展趋势:人工智能.数据分析 2. 通过什什么途径学习的Python? 廖雪峰.网络博客.相关 ...

  2. 经典Python面试题之Python基础篇

    Python基础篇 1. 为什么学习Python? 2. 通过什么途径学习的Python? 3. Python和Java.PHP.C.C#.C++等其他语言的对比? 4. 简述解释型和编译型编程语言? ...

  3. 杨洋python课程提高篇_杨洋老师《全民一起玩Python 基础篇+提高篇》

    全民一起玩Python 基础篇+提高篇 适用人群: 想用轻松系统的方式,从零开始真正理解掌握Python.进而学习办公.网抓.数据.AI.网站等技术的各界人士 课程概述: 制作精细.自带吐槽,每节课程 ...

  4. 杨洋python课程提高篇_杨洋老师:全民一起玩Python 基础篇+提高篇,老师幽默严谨不枯燥的学习编程...

    课程介绍 本套课程出自杨洋老师的全民一起玩Python 基础篇+提高篇官网售价299元,程保持了杨洋博士老师幽默严谨不枯燥的学习编程,清晰全面的授课风格,配有丰富的教学演示和插图.动画,是初学者学习P ...

  5. python基础篇{控制流语句}

    控制流语句 条件控制 单条件判断 多条件判断 练习 循环控制 while语句 for语句 range函数 练习 break 和 continue 语句 break语句 continue  python ...

  6. 面试题之第一部分(Python基础篇) 80题

    第一部分(python基础篇)80题 为什么学习Python?==*== # 1. python应用于很多领域,比如后端,前端,爬虫,机器学习(人工智能)等方面,几乎能涵盖各个开发语言的领域,同时它相 ...

  7. 十九. Python基础(19)--异常

    十九. Python基础(19)--异常 1 ● 捕获异常 if VS异常处理: if是预防异常出现, 异常处理是处理异常出现 异常处理一般格式: try: <...............&g ...

  8. Python基础篇:你好,世界!

    Python基础篇:你好,世界! 开了一段时间的博客了,可能很多人都对Python基础不掌握或者掌握不牢固,所以我会分别出算法篇和基础篇的教程来教大家一步一步走向程序员的水平 接着我们看看下面这行代码 ...

  9. Python基础篇(七)

    Python基础篇(七) 前言 一.元组 1.1 元组的定义 1.2 元组的常见操作 二.字典 2.1 字典的语法 2.2 字典常见操作 2.3 字典的循环遍历 三.任务清单 3.1 基础练习 3.2 ...

  10. pythondd_工程脚本插件方案 - c集成Python基础篇

    工程脚本插件方案 - c集成Python基础篇 序: 为何要集成脚本,怎样在工程中集成Python脚本. 在做比较大型的工程时,1般都会分核心层和业务层.核心层要求实现高效和稳定的基础功能,并提供调用 ...

最新文章

  1. Property list types and their various representations
  2. HTML textarea标签属性
  3. 第一篇 - 手把手教你理清EOS各种开发环境搭建来龙去脉
  4. socket技术难点
  5. error记录 | 不能将参数 1 从“const char [5]”转换为“LPCTSTR
  6. java的for循环取出数据只是拿到最后一个_新兴大数据分析榆中百合
  7. 负载均衡的集中实现方式
  8. 前端学习(977):本地存储导读
  9. pytorch1.7教程实验——迁移学习训练卷积神经网络进行图像分类
  10. QT @ VS2017的安装
  11. 开源 展uv_消费电子展上的开源,印度被封锁的网站等等
  12. 一打开就致命错误_AutoCAD致命错误:Unhandled Delayloadquot;D3DCOMPILER_47.dll
  13. 【Hadoop Summit Tokyo 2016】基于Apache Spark的数据科学
  14. linux中grep命令的使用
  15. 冰点还原精灵如何安装
  16. 200元组群晖—HP惠普T610瘦客户端:直接硬盘启动黑群晖
  17. 嵌入式的苦逼从何而来
  18. SEO优化——向各大网站提交自己的网址,加快收录速度
  19. 笔记·Pandas几类数据读写方法对比——csv,parquet,feather和pickle
  20. 哪一个国家耗巨资请熊猫去的_熊猫4.0:一个月过去了,复苏迹象

热门文章

  1. 如何批量下载《大数据分析实用技术案例》的学习视频
  2. AI发展“风口”在哪里?陪伴才是“蓝海”
  3. ROS2 Galactic Depth to World coordinate RGBD相机的深度数据转换到世界坐标系
  4. Java线程基础(二)
  5. 单点登录之ajax跨域实现
  6. USACO 4.3 Street RaceThe Primes(跪了)
  7. Pandas读取excel中的数据,并利用现有列数据生成新列
  8. 【Prison Break】第一天(3.27)
  9. Pyinstaller使用教程
  10. 智能优化算法:黑寡妇算法 -附代码