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. spine-unity3D 学习笔记

    http://zh.esotericsoftware.com/spine-using-runtimes //skeletonData SkeletonAnimation skeletonAnimati ...

  2. vim 编辑基础使用-----linux编程

    Linux系统编程: VIM编辑器 | VIM Introduce 学习 vim 并且其会成为你最后一个使用的文本编辑器.没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用. 我建议下面这 ...

  3. N76E003之IO控制

    N76E003最多支持26个可位寻址的通用I/O引脚,分成4组 P0 到 P3 .每一个端口有它的端口控制寄存器(Px).端口控制寄存器的写和读有不同的意思.写端口控制寄存器设置输出锁存逻辑值,读端口 ...

  4. Get方法和post方法有何不同?

    Get方法和post方法有何不同? 在B/S应用程序中,前台与后台的数据交互,都是通过HTML中Form表单完成的.Form提供了两种数据传输的方式——get和post.虽然它们都 是数据的提交方式, ...

  5. 【转载】C#调用C++ DLL

    using System; using System.Collections.Generic; using System.Linq; using System.Text; //1. 打开项目“Tzb” ...

  6. 题目1006:ZOJ问题(递推规律)

    题目链接:http://ac.jobdu.com/problem.php?pid=1006 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  7. Windows应急响应操作手册

    查看表征异常 系统卡慢.宕机.CPU和内存占用高.网络拥塞或断网.磁盘空余空间无理由大幅度缩小等,根据以上表征,可以初步猜测系统面临的问题. windows 下查看系统基本信息 PS C:\Users ...

  8. App.config使用ASP.NET Web Project的Transformation

    1.创建对应configuration的App.config文件,比如:App.Debug.config.App.Release.config. 2.编辑项目文件,将App.*.config文件的Bu ...

  9. iOS - 获取音视频文件的Metadata信息

    // // MusicInfoArray.h // LocationMusic // // Created by Wengrp on 2017/6/22. // Copyright © 2017年 W ...

  10. MySQL的btree索引和hash索引的区别 (转)

    Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-T ...