异常处理涉及的关键字:

try:

理解它是扫描器,将可能出现异常的代码放入其中;

如果在执行的过程中出现异常对象了,扫描器会立即察觉到此异常对象,

但是它没有处理它的能力,所以会将异常对象给到except(捕获器)进行处理

except:

理解它是捕获器,后面可以定义异常类型,并且和as关键字配合使用;

定义多个except是合法的,但是它的执行顺序是有由上往下,一旦匹配上某个except,之后的就不执行了;

匹配成功就理解将异常对象捕获住并且kill,顺便会执行except内部的代码

finally:

将一定需要被执行的代码定义其中,【记住】:finally一定会被执行(核心)

使用场景:像关闭文件、断开数据库连接等行为都可以放入到finally中

else:

位置在finally前,except后;效果/作用类似于循环

没有异常对象出现,else就会被执行,反之不会被执行

raise:

手动抛出一个异常类型的对象,定义:raise 异常类型(msg)

定义格式:

格式一:

try:

语句块1

except 异常类型1 as e:

语句块2

except 异常类型2 as e:

语句块3

except 异常类型3 as e:

语句块4

finally:

语句块5

【注意事项】:

以上的格式由多个except语句并列存在,每个except包含一种类型

如果它们之间没有子父类的关系(互斥),那么谁上谁下无所谓

如果它们之间存在子父类的关系(包含),那么小的在上,大的在下

格式二:

try:

语句块1

except 异常类型1 as e:

语句块2

except 异常类型2 as e:

语句块3

except 异常类型3 as e:

语句块4

except (异常类型4,异常类型5,...,异常类型m) as e:

finally:

语句块5

【格式说明】:

一个except具备多个捕获能力(捕获多种不同类型异常对象)

格式三:

try:

语句块1

except 异常类型1 as e:

语句块2

except 异常类型2 as e:

语句块3

except 异常类型3 as e:

语句块4

except (异常类型4,异常类型5,...,异常类型m) as e:

语句块5

except Exception as e:

语句块6

finally:

语句块7

【类型说明】:

Exception是所有异常类型的父类型,它都是定义在最后一个except的位置

格式三:

try:

语句块1

except 异常类型1 as e:

语句块2

except 异常类型2 as e:

语句块3

except 异常类型3 as e:

语句块4

except (异常类型4,异常类型5,...,异常类型m) as e:

语句块5

except:

语句块6

finally:

语句块7

【Exception的简化版使用】:

如果定义了except,那么它必须是最后一个except,它可以理解为是Exception的简化形式

注意事项:

1).try...finally这种格式是合法的,但是它丧失了解决异常对象的能力 --> 开发不会出现

2).else语句必须配合except使用,出现位置一定是在最后一个except的后面

3).常见的运行时异常类型:

ZeroDivisionError:分母为0的异常

TypeError:类型有误的异常

NameError:没有定义就使用的异常

IndexError:下标越界的异常

FileNotFoundError:文件找不到的异常

4).with open ... as ...语句可以优化原始的open操作!体现:它不需要手动close()文件对象

总结:学习异常对象简单归纳为5个关键字:try except finally else raise

1.异常体系:

演示自动抛出异常对象:defdiv(a,b):

print(a / b)

div(10,0)

演示异常处理的方式一:try ... except ...

try:

print(10/0)

exceptZeroDivisionError ase:

print(e)

try:

print("abc"+123)

exceptTypeError ase:

print(e)

try:

print(a)

exceptNameError ase:

print(e)

try:

lt = [1,2,3,4,5]

print(lt[5])

exceptIndexError ase:

print(e)

try:

fr =        open(r‘C:\Users\Administrator\Desktop\kaifanglist1.txt‘,‘r‘,encoding=‘utf-8‘)

print(fr.read())

fr.close()

exceptFileNotFoundErrorase:print(e)

except(ZeroDivisionError,TypeError,NameError,IndexError,FileNotFoundError) ase:

print(‘我能捕获5种类型的异常对象...‘)

exceptException ase:

print(‘我是所有异常类型的父类型,我能解决所有的异常类型对象...‘)

except:

print(‘我是Exception的简化形式,我只能出现在最后一个except的位置...‘)

补充:except不能捕获处理类似于语法错误这种情况

演示finally语句的使用:

将一定要被执行的代码定义在finally中,不管之前的代码怎么样(异常是否被解决),finally一定会被执行,在后期的学习和开发中,我们将关闭文件、关闭数据库连接等操作都定finally中

try:

fr = open(r‘C:\Users\Administrator\Desktop\a.txt‘,‘r‘)  #文件能打开     print(fr.read())

print(10 / 0)

#fr.close()        #因为关闭文件操作是一定要被执行的 但是在try里面也有可能存在风险性,当print(10 / 0)行不了,则无法执行close操作,所以关闭文件操作需要放在finally语句当中except:

print(‘解决异常‘)

finally:

print(‘我是finally,我一定会被执行...‘)

fr.close()

但是如果一开始就是一个打不开的文件,则也没有办法关闭文件啦

fr = 0

try:

fr = open(r‘C:\Users\Administrator\Desktop\a111.txt‘,‘r‘)   #没有此文件名 (文件存在则fr不为None值)     print(fr.read())

except:

print(‘解决异常‘)

finally:

print(‘我是finally,我一定会被执行...‘)

iffr:     #fr为None值则if为False,否则为True,执行以下指令(为了安全性)

fr.close()

引入新的语法糖:with open...操作:不需要程序员认为的去书写close()函数

Withopen(r‘C:\Users\Administrator\Desktop\a.txt‘,‘r‘)asfr:

print(fr.read())

解决异常也是一样

try:

withopen(r‘C:\Users\Administrator\Desktop\a.txt‘,‘r‘) asfr:

print(fr.read())

except:

print(‘干掉啦,干掉啦...‘)

面试题:Finally案例:分别输出了哪些内容,返回值是多少

deffunc():

try:

print(‘我是try...‘)

print(10 / 2)

return1       #执行此步 则函数就结束了,又因为finally一定要被执行,所以return 1不会被执行,直接调到finally    except:

print(‘我是except...‘)

return2

finally:

print(‘我是finally...‘)

return3

num = func()

print(num)

#结果得到是       我是try...

5.0

我是finally...

3

如果题目改为如下,则

deffunc():

try:

print(‘我是try...‘)

print(10 / 0)

return1

except:

print(‘我是except...‘)

return2     #执行此步 则函数就结束了,又因为finally一定要被执行,所以return 2不会被执行,直接调到finally

finally:

print(‘我是finally...‘)

return3

num = func()

print(num)

#结果得到是       我是try...

我是except...

我是finally...

3

演示else语句和异常处理机制配合使用:

特点:

如果try中没有出现异常对象,那么else语句就一定会被执行

如果try中出现了异常对象,就算被处理了,else还是不会被执行try:

print(‘我是try...‘)

print(10 / 0)

exceptException ase:

print(‘我是except...‘)

else:

print(‘我是else...‘)

finally:

print(‘我是finally...‘)

#得到   我是try...

我是except...

我是finally...

#如果吧print(10 / 0) 改为print(10 / 2)

#得到   我是try...

5.0

我是else...

我是finally...

演示raise的使用:

作用:手动抛出异常对象age = 18

ifage < 0 orage > 130:

try:

raiseException(‘年龄有问题...‘)

except:

print(‘年龄不合法...正在处理‘)

pass

else:

print(‘年龄为:%d‘%age)

print(‘能走吗?‘)

#得到结果为     年龄为:18

能走吗?

#如果第一行是age=-18,则

#得到结果为     年龄不合法...正在处理

能走吗?

演示异常处理的方式二:不断往上级传递异常对象,回避问题的方式defm1():

print(‘我是m1...‘)

print(10 / 0)

defm2():

print(‘我是m2...‘)

# try:m1()

# except:

#     passdefm3():

print(‘我是m3...‘)

try:

m2()

except:

passm3()

#得到结果   我是m3...

我是m2...

我是m1...

原文:https://www.cnblogs.com/bonheur/p/12374383.html

python异常处理机制例题_16.python异常处理相关推荐

  1. java异常处理机制_Java核心技术梳理-异常处理

    目录 一.引言 二.异常处理机制 2.1 try...catch 捕获异常 2.2 异常类继承体系 2.3 多异常捕获 2.4 获取异常信息 2.5 finally回收资源 2.6 自动关闭的try语 ...

  2. 简述java的异常处理机制_简述java异常处理机制

    引言: Hello,我的好朋友们,又到我们相聚的时间了,今天我要和大家分享一些有关java异常处理的相关 知识,也是通过老师的讲解和相关材料的借鉴之后的一个比较系统的总结,真心希望写完这篇文章的我和看 ...

  3. 深入对比数据科学工具箱:Python和R的异常处理机制

    概述 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件).Python和R作为一门编程语言自然也是有各自的异常处理机制的,异常 ...

  4. Laravel 5.5 的错误异常处理机制以及应用实例

    一.前言 我们在开发项目中,难免会因为逻辑上的失误而报错,这些报错的展现形式也就是框架封装好的异常处理机制.在项目上线之前,我们还可以根据框架提供的报错信息来锁定错误代码的位置.但是项目上线之后我们是 ...

  5. 黑马程序员_java异常处理机制

    java异常处理机制 1:什么是异常? 异常(Exception)也叫例外.在Java编程语言中,异常就是程序在运行过程中由于硬件设备问题.软件设计错误.缺陷等导致的程序错误.在软件开发过程中,很多情 ...

  6. Java异常处理(2)--异常处理机制及自定义异常

    在编写程序时,经常要在可能出现错误的地方加上检测的代码,如进行x/y运算时,要检测分母为0,数据为空,输入的不是数据而是字符等.过多的if-else分支会导致程序的代码加长.臃肿,可读性差.因此采用异 ...

  7. Python继承机制及其使用

    Python继承机制及其使用 Python 类的封装.继承.多态 3 大特性,前面章节已经详细介绍了 Python 类的封装,本节继续讲解 Python 类的继承机制. 继承机制经常用于创建和现有类功 ...

  8. 最全最详细的Java异常处理机制

    一.异常概述与异常体系结构 异常概述 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格 ...

  9. python异常处理机制的好处_浅谈Python异常处理机制

    异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...

最新文章

  1. JOGL   java调用openGL
  2. Mysql水平分表-后端代码
  3. 这是最好的时代,也是最坏的时代
  4. python onenet_使用Python2.7 POST 数据到 onenet 平台
  5. EasyNetQ操作RabbitMQ
  6. C语言中#define的用法(转)
  7. 实战课堂:为什么更换存储之后一切正常但RAC集群启动不了?
  8. 每年圣诞海报是躲不掉的,趁时间还来得及,看看这里PSD分层模板
  9. linux du命令参数及用法详解---linux统计磁盘空间大小命令
  10. 2021-09-08 全排列
  11. Android PdfViewer预览pdf滚动或放大缩小时模糊然后正常的问题
  12. MATLAB基础绘图操作
  13. Q Learning学习笔记
  14. 纬衡多个用户荣获“第五届建筑创作奖”
  15. 光学系统中的几何像差
  16. 使用Glide加载圆角矩形图片、圆形图片
  17. 交换机半双工通信测试
  18. CUDA基础(一):CPU体系架构概述
  19. C语言字符数组的定义与初始化
  20. MTL框架:模型、权重与融合公式

热门文章

  1. android美食app设计图,基于位置的Android美食地图应用的设计与实现
  2. 摇床摇篮是哄睡很好用的工具
  3. 我是云南的云南怒江的是什么梗 我是云南的云南怒江的梗出处
  4. 【图像去噪】基于matlab自适应中值滤波图像去噪【含Matlab 1156期】
  5. 关于order by的一些用法
  6. java excel 另存为_java 代码怎么实现另存为excel文件格式
  7. 干货集中营app制作
  8. 电容笔和Apple pencil的区别?适合ipad画画的电容笔推荐
  9. latex左侧大括号 latex中大括号多行公式
  10. 2018华为软件精英挑战赛经验(一)