Exception

1.assertionerror举例

 >>> my_list=['小甲鱼是帅哥']
>>> assert len(my_list)>0
>>> my_list.pop()
'小甲鱼是帅哥'
>>> assert len(my_list)>0
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
assert len(my_list)>0
AssertionError
>>>

2.attribute举例

 >>> my_list.fishc #实际上my_list这个对象并没有fishc这样的属性,所以会报错
2 Traceback (most recent call last):
3 File "<pyshell#7>", line 1, in <module>
4 my_list.fishc
5 AttributeError: 'list' object has no attribute 'fishc'

3.indexerror举例

 >>> my_list=[1,2,3]
>>> my_list[3]
3 Traceback (most recent call last):
4 File "<pyshell#9>", line 1, in <module>
5 my_list[3]
6 IndexError: list index out of range

4.keyerror举例

 >>> my_dict={'one':1,'two':2,'three':3}
>>> my_dict['one']
1
>>> my_dict['four'] #访问的字典元素不存在
5 Traceback (most recent call last):
6 File "<pyshell#12>", line 1, in <module>
7 my_dict['four']
8 KeyError: 'four'
9 >>> my_dict.get('four') #使用get方法可以避免报错的出现,以避免让用户看到报错

5.nameerror举例

 >>> fishc #尝试访问一个不存在的变量
2 Traceback (most recent call last):
3 File "<pyshell#14>", line 1, in <module>
4 fishc
5 NameError: name 'fishc' is not defined

6.typeerror举例(不同类型间的无效操作)

 >>> 1+'' #‘1’
2 Traceback (most recent call last):
3 File "<pyshell#17>", line 1, in <module>
4 1+'1'
5 TypeError: unsupported operand type(s) for +: 'int' and 'str'

7.zerodivisionerror举例

 >>> 5/0
2 Traceback (most recent call last):
3 File "<pyshell#18>", line 1, in <module>
4 5/0
5 ZeroDivisionError: division by zero

——————————————————————————————————————————————————————

1.try……except

 try:
f=open('我为什么是一个文件.txt')
print(f.read())
f.close()
except OSError:
print('文件出错啦') #不会报错了,如果进入except就会打印出print('文件出错啦')的提示信息

如果开发人员还想看到报错那么完善为如下代码:

 try:
f=open('我为什么是一个文件.txt')
print(f.read())
f.close()
except OSError as reason:
print('文件出错啦\n错误的原因是:'+str(reason))

捕获多个异常抛出except情况:

 try:
sum=1+''
f=open('我为什么是一个文件.txt')
print(f.read())
f.close()
except OSError as reason:
print('文件出错啦\n错误的原因是:'+str(reason))
except TypeError as reason:
print('类型出错啦\n错误的原因是:'+str(reason))
——————————————————————————————————————————————————————————————
两个except可以优化为一个except如下:
except(OSError,TypeError):
    print('出错啦')

except不明确error报错:

 try:
sum=1+''
f=open('我为什么是一个文件.txt')
print(f.read())
f.close()
except: #except后未明确指出进入哪个错误
print('出错啦')

2.finally:无论如何都会被执行的代码

可以把上方f.close()代码写到finally中,try中不管有什么报错,那么close()语句都会被执行。

3.raise:自己引出一个异常

 >>> raise
2 Traceback (most recent call last):
3 File "<pyshell#0>", line 1, in <module>
4 raise
5 RuntimeError: No active exception to reraise
>>> 1/0
7 Traceback (most recent call last):
8 File "<pyshell#1>", line 1, in <module>
9 1/0
10 ZeroDivisionError: division by zero
>>> raise ZeroDivisionError
12 Traceback (most recent call last):
13 File "<pyshell#2>", line 1, in <module>
14 raise ZeroDivisionError
15 ZeroDivisionError
>>> raise ZeroDivisionError('除数为零的异常')
17 Traceback (most recent call last):
18 File "<pyshell#3>", line 1, in <module>
19 raise ZeroDivisionError('除数为零的异常')
20 ZeroDivisionError: 除数为零的异常

【Pyton】【小甲鱼】异常处理:你不可能总是对的的更多相关文章

  1. 【Pyton】【小甲鱼】类和对象

    一.类 定义一个类,例子如下: class Turtle: #定义一个名为Turtle的类,Python中类型约定以大写字母开头 #属性 color='green' weight=10 legs=4 ...

  2. 【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜

    pickle(泡菜): picking:将对象转换为二进制 unpicking:将二进制转换为对象 1 >>> import pickle 2 #picking:对象导入到文件中(二 ...

  3. 【Pyton】【小甲鱼】文件

    1.打开文件的集中模式: 2.文件对象方法: 对于文件对象方法的练习代码: 读取F:\\script\\script.txt位置文件中内容 >>> f=open('F:\\scrip ...

  4. 小甲鱼Python3笔记

    000-愉快的开始 入门容易,学习难,代码量少. 跨平台: Windows, Mac OS, Linux, UNIX. 应用领域: 操作系统 WEB 3D动画 企业应用 云计算等等. 001-我和Py ...

  5. 小甲鱼零基础入门学习python--课后作业

    [小甲鱼零基础入门学习python--课后作业] 小甲鱼零基础入门学习python--课后作业 本章内容: 1.基础部分的作业 2.函数部分的作业 3.字典.集合.文件部分作业 4.异常 5.Easy ...

  6. 小甲鱼PE详解之IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用(PE详解03)

    咱接着往下讲解IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用! (视频教程:http://fishc.com/a/shipin/jiemixilie/) 接着我们来谈谈 IM ...

  7. 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)

    PE Header 是PE相关结构NT映像头(IMAGE_NT_HEADER)的简称,里边包含着许多PE装载器用到的重要字段.下边小甲鱼将为大家详细讲解哈~ (视频教程:http://fishc.co ...

  8. 小甲鱼python视频第九讲(课后习题)

    1.列表里可以存放什么东西? 可以存放任何的数据类型, list1 = ['我爱你','i love you',1314] print(list1) 2.向列表中添加元素 append(将参数作为一个 ...

  9. 小甲鱼python视频第八讲(课后习题)

    1.for循环的使用,注意下面代码的区别 for i in range(0,10,2): print("i love you") for i in range(0,10): pri ...

随机推荐

  1. Elasticsearch 配置同义词

    配置近义词 近义词组件已经是elasticsearch自带的了,所以不需要额外安装插件,但是想要让近义词和IK一起使用,就需要配置自己的分析器了. 首先创建近义词文档 在config目录下 mkdir ...

  2. C++ template —— 表达式模板(十)

    表达式模板解决的问题是:对于一个数值数组类,它需要为基于整个数组对象的数值操作提供支持,如对数组求和或放大: Array<), y(); ... x = 1.2 * x + x * y; 对效率 ...

  3. 普通for循环和增强for循环的区别

    1.普通for循环:自行维护循环次数,循环体自行维护获取元素的方法: int[] array = new int[]{1,2,3,4,5}; //int[] array ={1,2,3,4,5} ; ...

  4. Webpack2 升级指南和特性摘要(转)

    Webpack2 升级指南和特性摘要 resolve.root, resolve.fallback, resolve.modulesDirectories 上述三个选项将被合并为一个标准配置项:res ...

  5. mouseleave,mouseout 和mouseover ,mouseenter区别

    鼠标离开事件: mouseleave:只有鼠标离开指定元素时才会触发; mouseout 鼠标离开指定元素或内部子元素都会触发; 鼠标在上事件: mouseover:只有鼠标进入指定元素时才会触发; ...

  6. nginx fastcgi配置

    1.1 nginx概述nginx简介Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/P ...

  7. ansible register基础使用讲解

    当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理(执行其他 ansible 语句),则一般会用到register . 举个例子: 我们需要判断 zip 包是否存在,如果存在了就执行一 ...

  8. iOS计算两个时间的时间差

    + (long)calculteHourL:(NSDate *)endDate startDate:(NSDate *)startDate { NSCalendar *cal = [NSCalenda ...

  9. jenkins之-----------在必要的时候并发构建

    jenkins支持在同一节点支持同任务并发,但存在形成报告时会覆盖相应的文件,查看官网后发现有介绍“在必要的时候并发构建” 大致意思就是:将此项勾选后,可以同时执行,执行在任务自己的workspace ...

  10. (转)关于如何学好游戏3D引擎编程的一些经验

    此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自己 QQ79134054多希望大家一起交流与沟通 这篇文章是 ...