网络编程之异常处理
一、异常处理:
异常是错误发生的信号,是由错误引发的,一旦程序出错,就会产生一个异常,应用程序未处理异常,异常便会抛出,程序随之终止。
1. 异常包括:异常的追踪信息,异常的类型,异常类型的值
2.常见的异常类型
语法错误:应该在程序运行前修正
逻辑错误:
具体的错误类型:比如:IndexError 索引异常。KeyError 值异常。TypeError 类型异常
Exception 万能异常 (用于没有语法错误的异常)
3.如何处理异常 (在不知道因为什么原因出错时,才用try except 查异常)
try: #在检测异常
可能出现异常的代码
except 异常的类型 : (except是在捕获异常。如果except后的异常类型刚好是错误的类型,则会执行下面的代码。否则不执行)
pass
例子:
print('===star===') try: l1=[] print(l1[1]) print('===1===') print('===2===') print('===3===') except KeyError : pass print('===end===') print('===star===') try: l1=[] print(l1[1]) print('===1===') print('===2===') print('===3===') except IndexError : pass print('===end===') print('===star===') try: l1=[] print(l1[1]) print('===1===') print('===2===') print('===3===') except IndexError as e : #e是变量。IndexError 是指索引错误 print('e') #输出的是异常的值 print('===end===')
print('===star===')
try:
l1=[]
print(l1[1])
print('===1===')
d={}
d['k'] #这里也是一个异常,但是上面的异常已经有了 就在上面终止了,执行不到这里
print('===2===')
print('===3===')
except IndexError as e : #e是变量。IndexError 是指索引错误
print('e') #输出的是异常的值
print('===end===')
print('===star===')
try:
l1=[]
print(l1[1])
print('===1===')
print('===2===')
print('===3===')
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except Exception as e:
print('万能异常',e)
else: #表示没有异常发生时侯触发
print('没有异常发生时候触发')
finally: #表示有,没有异常都会触发 用在链接数据库时
print('有没有异常都会触发')
print('===end===')
4.raise TypeError 表示主动抛异常
stus=[1,2,3,4] if len(stus)==0 raise TypeError
print('===')
stus=[]
if len(stus)==0
raise TypeError
print('===')
5.assert 意思是:断言。如果断言成功 则执行下面的语句,否则抛出异常,说条件不满足
l3=[] assert len(l3)>0 #表示断言列表l3的长度大于0 如果断言成功 则执行下面的语句,否则抛出异常,说条件不满足 print(‘===’)
6.自定义异常
class MyException(BaseException) def __init__(self,msg): super( MyException,self).__init__() ??? self.msg=msg def __str__(self): return '%s' %self.msg raise MyException('类型错误')
。