一、异常处理

1、排错:多行报错的时候,真正报错的是最下面;若报错的地方在别人的代码里,注意别人写的代码是不会报错的,还是找自己的错

2、特点:一旦发生异常,程序不会再向下执行

3、处理方法:

(1)用if语句去规避,但是成本太高

(2)没法用if处理的报错,就用异常处理去解决报错

4、异常处理的办法

(1)try和except的组合:

try:a
except NameError:print(123)

1)try中是要执行的代码,当遇到except后面的错误类型时就会执行except中的代码,try中的代码就会停留在异常报错的地方,并且不会向下执行,当except中的代码处理完后,程序就会继续向下执行try和except语句外部的代码2)try和except是一体的,不能分开用3)except只能处理一种报错类型,所以except可以有多个分支去处理多个报错类型
try:num = input('num : ')int(num)  # ValueErrorprint(num)asum(1, 2, 3)
except ValueError:print('请输入一个数字')
except NameError as nameerror:print('产生了一个%s'%nameerror)
except TypeError:print('又一个错误诞生了')

(2)as语句的用法:except  异常类型  as  变量名:print(变量名)变量名就是这个异常类型的具体内容

            一般用在不确定错误的内容是什么

(3)万能异常:except  Exception:就代表所有的异常类型,都可以进行处理

                   放在所有except分支的最后

                   对于预料不到的异常用万能,能预料到的异常还是用分支去处理

(4)try except和else的组合:

若try中的代码被顺利执行并且没有出发异常处理(except),程序就会执行else中的代码。跟for和while中的else用法类似

(5)try except和finally的组合

1)finally语句中的代码不管有没有触发异常处理(except)都会被执行

2)主要做一些清理的工作,例如关闭文件,因为try中的遇到异常就会停止不会向下执行。避免因为程序异常造成的浪费资源和逻辑问题

3)注意和函数的用法:当函数的return在finally的前面时,函数运行到return时不会停止,而是会继续执行finally中的代码,当finally中的代码执行完后,函数才停止,然后外部接受的返回值才能打印出来

(6)try except else和finally的组合:这就是一个完整的异常处理机制。

(7)主动触发异常:raise 异常类型  目的就是告诉别人这里需要修改

(8) 断言:相当于if判断

assert 条件  条件不成立时下面的代码不会执行。可以用来对使用者进行一些条件的约束

注意:

1、异常处理不要随意用,写个代码就用一下,异常处理是为了规避一些潜在的报错以提高用户体验度

2、try语句里的代码要尽量少,在代码开发阶段不要随意调用函数,这样的话函数里的错误就不会显示了;在代码应用阶段为防止用户使用时函数频繁报错就可以在try语句中调用函数。

常用异常:

AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的

更多异常:

ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError

转载于:https://www.cnblogs.com/wanghl1011/articles/7514206.html

9月13日学习内容整理:异常处理相关推荐

  1. 10月13日学习内容整理:线程,创建线程(threading模块),守护线程,GIL(全局解释器互斥锁)...

    一.线程 1.概念:一条流水线的工作过程 2.和进程的区别和关系 (1)关系 >进程是资源单位,线程是执行单位,cpu真正执行的是线程 >一个进程至少有一个线程 >多线程针对的是一个 ...

  2. 1月8日学习内容整理:JS的作用域和作用域链

    补充: 对于编译型语言,是编译一次生成可执行文件来执行多次:对于解释型语言,始终都是编译一次执行一次 python编译时要看有没有赋值操作,没有的话就不编译任何内容:若有赋值操作,才会开辟内存空间,把 ...

  3. 10月25日学习内容整理:数据操作:增加更新删除,单表查询操作

    >>\G是按行显示,必须是大写 >>插入数据:补充另一种插入记录的方法 -->insert into 表名1(字段1,字段2,...) select 字段1,字段2,.. ...

  4. 9月7日学习内容整理:内置函数

    一.内置函数 1.作用域相关: (1)globals()   查看全局作用域,显示所有的变量 (2)locals()      查看局部作用域,只会显示当前函数使用的变量 2.迭代器相关: (1)it ...

  5. 2月1日学习内容整理:算法

    1.概念 一个计算过程,解决问题的方法 2.时间复杂度和空间复杂度 时间复杂度:用来表示算法的运行效率 >>>一般来说,时间复杂度高的算法比时间复杂度低的算法运行效率高,,但这不是绝 ...

  6. 12月7日学习内容整理:ORM单表操作

    补充:url(r"^$")  代表只匹配域名,没有路径部分 一.添加: 1.方式一:昨天讲过的实例化对象 2.方式二: stu_obj=类名(就是表名).objects.creat ...

  7. 11月17日学习内容整理:jquery文档处理,事件细讲,动画

    一.文档处理:下面举例中的B可以是标签也可以是选择器也可以是字符串 >>>添加到指定元素内部的后面 $(A).append(B) // 把B放到A内部元素的最后,A是父节点$(A). ...

  8. 1月11日学习内容整理:请求库selenium之选择器,等待元素被加载

    首先引入: from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdr ...

  9. 1月17日学习内容整理:Scrapy框架补充之pipeline,去重规则

    @@@老师博客::: 关于高性能和scrapy框架 http://www.cnblogs.com/wupeiqi/articles/6229292.html 关于scrapy-reids组件 http ...

最新文章

  1. 基于比特币现金BCH二层网络能实现区块链2.0以太坊的智能化吗
  2. 黑马程序员 oc对象的方法成员变量
  3. 定义空列表元素类型_python数据类型是什么
  4. oracle r11,Oracle XML Publisher在Oracle R11i中的实际运用
  5. Lucene.NET入门实例
  6. vue.js 父子组件间 props 数据同步处理
  7. Xshell免费学生版
  8. 《计算机网络(第7版)》-谢希仁
  9. AmiGO2:在线浏览和查询GO信息的利器
  10. 智芯传感推出高性能低功耗ZXP2绝压压力传感器
  11. 阿里P7、P8、P9级别需要多少年的工作经验,还是因能力而定?
  12. LSTM(长短期记忆网络)原理与在脑电数据上的应用
  13. 机器人理论(3)DH表达法:解析关节轴之间的关系
  14. 如何在数据验证单元格区域禁用粘贴
  15. 联邦学习论文阅读三:ChainFL
  16. 红米4a android p,一图彻底看懂红米4/红米4A
  17. 亚马逊aws免费云服务器搭建总结
  18. AndroidStudio子线程更新UI的几种方式
  19. 【论文笔记】Encoding cloth manipulations using a graph of states and transitions
  20. STM32之中断的使用

热门文章

  1. SharePoint 2013安装图文教程
  2. 初学者如何开发出一个高质量的J2EE系统
  3. 多租户数据库性能测试手册
  4. JS--切换图片总结
  5. 当UG的License服务器换了后, 客户端如何调整?
  6. 英语单词 factor cull
  7. ROS 总结(二):创建URDF模型
  8. Qt之对话框设计——淡入淡出效果
  9. php 输出true false
  10. 也说c#获取windows特殊路径