python中的异常处理

异常处理

<1>捕获异常 try...except...

看如下示例:

try:

print('-----test--1---')

open('123.txt','r')

print('-----test--2---')

except IOError:

pass

把可能出现问题的代码,放在try中

把处理异常的代码,放在except中

<2>实际开发中,捕获多个异常的方式,如下:

#coding=utf-8

try:

print('-----test--1---')

open('123.txt','r') # 如果123.txt文件不存在,那么会产生 IOError 异常

print('-----test--2---')

print(num)# 如果num变量没有定义,那么会产生 NameError 异常

except (IOError,NameError):

#如果想通过一次except捕获到多个异常可以用一个元组的方式

# errorMsg里会保存捕获到的错误信息

print(errorMsg)

<3>获取异常的信息描述

except 异常名 as result

<4>捕获所有异常

except Exception as result #捕获所有异常,并且存储异常的基本信息

<5> else

咱们应该对else并不陌生,在if中,它的作用是当条件不满足时执行的实行;同样在try...except...中也是如此,即如果没有捕获到异常,那么就执行else中的事情

try:

num = 100

print num

except NameError as errorMsg:

print('产生错误了:%s'%errorMsg)

else:

print('没有捕获到异常,真高兴')

<6> try...finally...

try...finally...语句用来表达这样的情况:

在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。 比如文件关闭,释放锁,把数据库连接返还给连接池等

finally:

f.close()

print('关闭文件')

抛出自定义的异常

你可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类

下面是一个引发异常的例子:(输入小于3的字符串就会异常)

class ShortInputException(Exception):

'''自定义的异常类'''
def __init__(self, length, atleast):

#super().__init__()

self.length = length

self.atleast = atleast

def main():

try:

s = input('请输入 --> ')

if len(s) < 3:

# raise引发一个你定义的异常

raise ShortInputException(len(s), 3)

except ShortInputException as result:#x这个变量被绑定到了错误的实例

print('ShortInputException: 输入的长度是 %d,长度至少应是 %d'% (result.length, result.atleast))

else:

print('没有异常发生.')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值