Pyton小甲鱼异常处理:你不可能总是对的

Posted 猪猪宝丫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pyton小甲鱼异常处理:你不可能总是对的相关的知识,希望对你有一定的参考价值。

Exception

1.assertionerror举例

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

2.attribute举例

1 >>> 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举例

1 >>> my_list=[1,2,3]
2 >>> 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举例

1 >>> my_dict={\'one\':1,\'two\':2,\'three\':3}
2 >>> my_dict[\'one\']
3 1
4 >>> 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举例

1 >>> 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+\'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举例

1 >>> 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

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

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

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

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

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

except不明确error报错:

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

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

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

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

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

 

以上是关于Pyton小甲鱼异常处理:你不可能总是对的的主要内容,如果未能解决你的问题,请参考以下文章

小甲鱼Python第033讲:异常处理:你不可能总是对的2| 课后测试题及参考答案

第九章 异常处理[DDT书本学习 小甲鱼]

Pyton小甲鱼爬虫4-XXOO

Pyton小甲鱼魔法方法

Python基础——异常处理

Python基础——异常处理