网络编程之异常处理

 

一、异常处理:

   异常是错误发生的信号,是由错误引发的,一旦程序出错,就会产生一个异常,应用程序未处理异常,异常便会抛出,程序随之终止。

 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('类型错误')

 

   

posted @ 2019-12-04 19:29  薛定谔的猫66  阅读(283)  评论(0)    收藏  举报