【Pyton】【小甲鱼】异常处理:你不可能总是对的
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】【小甲鱼】异常处理:你不可能总是对的的更多相关文章
- 【Pyton】【小甲鱼】类和对象
一.类 定义一个类,例子如下: class Turtle: #定义一个名为Turtle的类,Python中类型约定以大写字母开头 #属性 color='green' weight=10 legs=4 ...
- 【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜
pickle(泡菜): picking:将对象转换为二进制 unpicking:将二进制转换为对象 1 >>> import pickle 2 #picking:对象导入到文件中(二 ...
- 【Pyton】【小甲鱼】文件
1.打开文件的集中模式: 2.文件对象方法: 对于文件对象方法的练习代码: 读取F:\\script\\script.txt位置文件中内容 >>> f=open('F:\\scrip ...
- 小甲鱼Python3笔记
000-愉快的开始 入门容易,学习难,代码量少. 跨平台: Windows, Mac OS, Linux, UNIX. 应用领域: 操作系统 WEB 3D动画 企业应用 云计算等等. 001-我和Py ...
- 小甲鱼零基础入门学习python--课后作业
[小甲鱼零基础入门学习python--课后作业] 小甲鱼零基础入门学习python--课后作业 本章内容: 1.基础部分的作业 2.函数部分的作业 3.字典.集合.文件部分作业 4.异常 5.Easy ...
- 小甲鱼PE详解之IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用(PE详解03)
咱接着往下讲解IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用! (视频教程:http://fishc.com/a/shipin/jiemixilie/) 接着我们来谈谈 IM ...
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
PE Header 是PE相关结构NT映像头(IMAGE_NT_HEADER)的简称,里边包含着许多PE装载器用到的重要字段.下边小甲鱼将为大家详细讲解哈~ (视频教程:http://fishc.co ...
- 小甲鱼python视频第九讲(课后习题)
1.列表里可以存放什么东西? 可以存放任何的数据类型, list1 = ['我爱你','i love you',1314] print(list1) 2.向列表中添加元素 append(将参数作为一个 ...
- 小甲鱼python视频第八讲(课后习题)
1.for循环的使用,注意下面代码的区别 for i in range(0,10,2): print("i love you") for i in range(0,10): pri ...
随机推荐
- [Ubuntu] APT - Advanced Packaging Tool 简明指南
Advanced Packaging Tool,一般简称为apt,是Debian GNU/Linux distribution及其变体版本中与核心库一道处理软件的安装和卸载. Ubuntu是Debia ...
- async await yield
问题:async 和yield有什么区别? 无奈只能用“书到用时方恨少”来解释这个问题了.其实也是自己从开始编程就接触的是nodejs中的async 以及await ,yield几乎.貌似好像都没使用 ...
- javascript的实现事件的一些实例
嘿嘿,今天学习到了事件,其实在C#中事件只需要我们触发即可实现,但是在javascript并不是这样的,在这里,事件是javascript与html的交互,就是文档或者浏览器窗口发生的一件特定的交互瞬 ...
- FastCGI在nginx中的参数
FastCGI参数 fastcgi主要用于http调用外部解释器的接口,采用c/s结构,可以将http服务器和脚本解析器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程.当HTTP服务器每 ...
- 用layer插件实现tp3.2的分页
主要需要用到 /layer/layer.js 这个, 现在一个tp前端视图/article/index.html <!DOCTYPE html> <html lang=" ...
- 文件系统的挂载(2)---挂载rootfs文件系统
一.目的 本文主要讲述linux内核rootfs文件系统的挂载过程,内核版本为3.10. rootfs是基于内存的文件系统,没有实际的存储设备,所有操作都在内存中完成.为了保证linux内核的精简性, ...
- c++多线程——锁技巧
[转自]here 编写程序不容易,编写多线程的程序更不容易.相信编写过多线程的程序都应该有这样的一个痛苦过程,什么样的情况呢?朋友们应该看一下代码就明白了, void data_process() { ...
- U盘安装Centos7.1操作系统的问题记录
需要的软硬件环境>>>>>>>>>>>>>>>>>1.服务器(笔者用的笔记本).U盘2.Cento ...
- 【CF819C】Mister B and Beacons on Field 数学
[CF819C]Mister B and Beacons on Field 题意:外星人盯上了Farmer Jack的农场!我们假设FJ的农场是一个二维直角坐标系,FJ的家在原点.外星人向FJ的农场上 ...
- border-image使用过程中遇到的几个问题
这次年货,为了增添气氛,很多地方都用了边框,由于边框高度的不固定,给构建着实带了不小的麻烦. 通常我们处理边框的方法,无非以下两种方案: 1.切整张图片,做背景. 2.切上中下,进行拼接处理. 但是遇 ...