python3的异常处理

来源:互联网 发布:java 单个文件压缩 编辑:程序博客网 时间:2024/06/09 22:09

#使用异常处理,可以在程序因发生异常时继续往下执行。若没有异常处理,程序在发生异常时就会退出


1.异常处理的基本语法

2.常用的异常名

3.except 语句的几种用法

4.raise手工抛出异常

5.assert语句抛出异常

6.自定义异常类


1.异常处理的基本语法

Python中使用 try 语句来处理出现的异常, try 语句中也可以有一个 else语句块,表示若未发生异常。一般的 try 语句基本形式如下:

try:   <语句块1>             #可能产生异常的语句except <异常名1>:     #要处理的异常   <语句块>               #异常处理语句except <异常名2>:     #要处理的异常   <语句块>               #异常处理语句.........else:            <语句块>               #未触发异常,则执行改语句finally:   <语句块>               #无论是否触发 异常,都执行此语句

其中 else 和 finally 是可选的。


def fun(index):    lt = [1,2,3]    try:        print(lt[index])    except IndexError:        print("Index Error")    else:        print("Index OK!")if __name__ == '__main__':    fun(5)    fun(1)    '''#打印结果:Index Error2Index OK!'''



2.常用的异常名

异常名描述AttributeError调用不存在的方法引发的异常EOFError遇到文件结尾引发的异常ImportError导入模块出错引发的异常IndexError列表越界引发的异常IOErrorI/O操作引发的异常,如打开文件出错KeyError使用字典中不存在的关键字引发的异常NameError使用不存在的变量名引发的异常TabError语句块缩进不正确引发的异常ValueError搜索列表中不存在的值引发的异常ZeroDivisionError除数为零引发的异常

3.except语句的几种用法

1. except:                                           #捕获所有异常;

2. except <异常名>:                            #捕获指定异常;

3. except (异常名1,异常名2):              #捕获异常1或者异常2

4. except <异常名> as <数据>:            #捕获指定异常及其附加数据

5. except (异常名1,异常名2) as <数据> #捕获异常1或者异常2及其异常的附加数据


4.raise手工抛出异常
使用raise 可以抛出各种预定的异常,即使在程序运行时根本不会引发该异常

raise 的使用:

raise 异常名

raise 异常名,附加数据

raise 类


示例:

def fun():   for i in range(5):       try:           if i == 2:               raise NameError       except NameError:           print("get NameExcept")if __name__ == '__main__':    fun()'''#打印结果:get NameExcept'''


5.raise语句抛出异常

assert语句也是会抛出异常的,一般形式是: assert 条件   。当条件为假时,就会抛出AssertionError异常。

def fun():   for i in range(5):       try:           assert i<2   #当 i >=2时,就会触发异常       except AssertionError:           print("get AssertionError")if __name__ == '__main__':    fun()'''#打印结果:get AssertionErrorget AssertionErrorget AssertionError'''

assert语句一般用于在程序开发时测试代码的有效性,比如某个变量的值必须在一定范围内,而当运行时得到的值不符合要求,则引发异常,对开发者提醒。所以一般在程序开发中,都不去捕获这个异常,而是让它中断程序。原因是程序出现了问题,不应继续运行。


6.自定义异常类

在python中自定义异常类只需要继承 Exception 类即可。如:

class MyError(Exception):    pass
这就是一个简单的异常类。

class MyException(Exception):    def __init__(self,test):        self.test = test    def __str__(self):        return self.testif __name__ == '__main__':    raise MyException('MyException!!!')'''#打印结果:Traceback (most recent call last):  File "C:/Users/abc/PycharmProjects/untitled3/1", line 8, in <module>    raise MyException('MyException!!!')__main__.MyException: MyException!!!'''
可以看到通过调用 raise语句,可以成功抛出自定义的异常MyException


原创粉丝点击