鱼C-python之异常处理

有哪些异常?

异常就是当操作不符合python的规定的时候报出的提示信息,可以看小甲鱼整理的 python标准异常总结

如何捕获异常?

第一种方法: try — except 语句
语法:

try:
  检测范围
except Exception [as reason]:
  出现异常后(Exception )的处理代码

例子:

>>> try:
    f   =  open ('wos.txt')
    print(f.read())
    f.close()
except OSError:
    print('出错了')

    
出错了
>>> try:
    f   =  open ('wos.txt')
    print(f.read())
    f.close()
except OSError as reason:
    print('出错了,错误的原因是:'+str(reason))

    
出错了,错误的原因是:[Errno 2] No such file or directory: 'wos.txt'
>>> try:
    sum = 1 + '1'
    f   =  open ('wos.txt')
    print(f.read())
    f.close()
except OSError as reason:
    print('出错了,错误的原因是:'+str(reason))
except TypeError as reason:
    print('类型出错了,错误的原因是:'+str(reason))

    
类型出错了,错误的原因是:unsupported operand type(s) for +: 'int' and 'str'
>>> 

也可以把异常放在一起处理:

>>> try:
    sum = 1 + '1'
    f   =  open ('wos.txt')
    print(f.read())
    f.close()
except (OSError,TypeError):
    print('出错啦')

    
出错啦
>>> 

第二种方法: try — finally 语句
语法:

try:
  检测范围
except Exception [as reason]:
  出现异常后(Exception )的处理代码
finally:
  无论如何都会被执行的代码

先举一个反例如下:

>>> try:
    f   =  open ('D:\\exception.txt','w')
    print(f.write('我有内容'))
    sum = 1 + '1'
    f.close()   #关闭文件是在异常处理的外面,当遇到异常的时候就不会关闭了
except (OSError,TypeError):
    print('出错啦')

    
4
出错啦   #这时候去D盘下看exception.txt文件并没有内容。

所以嘞,引入了finally,把关闭操作放在这个下面

>>> try:
    f   =  open ('D:\\exception.txt','w')
    print(f.write('我有内容'))
    sum = 1 + '1'
except (OSError,TypeError):
    print('出错啦')
finally:
    f.close()

    
4
出错啦  #这时候去D盘下看exception.txt文件是有内容的
自己的代码引发异常 (raise)
>>> 1/0
Traceback (most recent call last):
  File "", line 1, in 
    1/0
ZeroDivisionError: division by zero
>>> raise ZeroDivisionError('除数为0的异常')
Traceback (most recent call last):
  File "", line 1, in 
    raise ZeroDivisionError('除数为0的异常')
ZeroDivisionError: 除数为0的异常
>>> 

打开的文件如果担心忘记关闭则使用 with语句:

try:
    with  open ('D:\\exception.txt','w') as f: 
        print(f.write('我有内容'))
        sum = 1 + '1'
except (OSError,TypeError):
    print('出错啦')

    
4
出错啦
>>> 

你可能感兴趣的:(鱼C-python之异常处理)