即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

python3的异常处理

编程语言 u014453898 43℃ 0评论

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


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 Error
2
Index OK!
'''






2.常用的异常名

异常名 描述
AttributeError 调用不存在的方法引发的异常
EOFError 遇到文件结尾引发的异常
ImportError 导入模块出错引发的异常
IndexError 列表越界引发的异常
IOError I/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 AssertionError
get AssertionError
get AssertionError
'''


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


6.自定义异常类

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

class MyError(Exception):
    pass

这就是一个简单的异常类。




class MyException(Exception):
    def __init__(self,test):
        self.test = test
    def __str__(self):
        return self.test

if __name__ == '__main__':
    raise MyException('MyException!!!')
'''
#打印结果:
Traceback (most recent call last):
  File "C:/Users/abc/PycharmProjects/untitled3/1", line 8, in 
    raise MyException('MyException!!!')
__main__.MyException: MyException!!!

'''

可以看到通过调用 raise语句,可以成功抛出自定义的异常MyException


转载请注明:CodingBlog » python3的异常处理

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情