一、异常处理
#1 什么是异常? # 异常是错误发生的信号,一旦程序出错,就会产生一个异常,应用程序未处理该异常, # 异常便会抛出,程序随之终止 #2、常见异常类型 #I:语法错误应该在程序运行前修正 # if 1 >2 # print(‘xxxxx‘) #II:逻辑错误 #x #NameError: name ‘x‘ is not defined # l=[] # l[10000] #IndexError # class Foo: # pass # Foo.x #AttributeError: # k={‘x‘:1} # k[‘y‘] #KeyError # 1/0 #ZeroDivisionError # for i in 3: #TypeError: # pass # age=input(‘>>: ‘) # age=int(age) #ValueError #3、如何处理异常 print(‘====>start<=====‘) try: l=[] print(l[1111]) print(‘====>1‘) print(‘====>2‘) print(‘====>3‘) except IndexError: #捕捉Indexerror错误,当匹配到该类型的错误时会出发except代码块的执行,然后继续执行except后面的代码!,若没有匹配到,代码就不会执行except代码块 pass print(‘====>end<=======‘) print(‘====>start<=====‘) try: l=[] print(l[1111]) print(‘====>1‘) print(‘====>2‘) print(‘====>3‘) except IndexError as e: #as e 的作用是把异常的值传给e print(‘===>‘,e) #list index out of range print(‘====>end<=======‘) print(‘====>start<=====‘) try: l=[] #print(l[1111]) print(‘====>1‘) d={} d[‘k‘] print(‘====>2‘) print(‘====>3‘) except IndexError as e: print(‘===>‘,e) print(1111) except KeyError as e: #except可以接多个 当捕捉到异常后,异常的代码和匹配的except之间的代码不会执行,然后接着执行匹配到的except之后的代码!! print(‘----‘,e) print(‘====>end<=======‘) print(‘====>start<=====‘) try: l=[] # print(l[1111]) print(‘====>1‘) d={} d[‘k‘] print(‘====>2‘) print(‘====>3‘) except IndexError: pass except KeyError: pass except Exception as e: #万能异常捕捉 print(‘万能异常--->‘,e) print(‘====>end<=======‘) print(‘====>start<=====‘) try: l=[] #print(l[1111]) # print(‘====>1‘) d={} # d[‘k‘] # print(‘====>2‘) # print(‘====>3‘) except IndexError: pass except KeyError: pass except Exception as e: print(‘万能异常--->‘,e) else: #当没有异常发生的时候执行 print(‘没有异常发生的时候触发‘) #没有异常发生的时候触发 finally: #有没有异常都触发 print(‘有没有异常都触发‘) #有没有异常都触发 print(‘====>end<=======‘) ‘‘‘ try: conn=connect(‘1.1.1.1‘,3306) conn.execute(‘select * from db1.t1‘) finally: conn.close() ‘‘‘ # stus=[‘egon‘,‘alex‘,‘wxxx‘] ip_list=[ # ‘1.1.1.1:8080‘, # ‘1.1.1.2:8081‘, # ‘1.1.1.3:8082‘, ] # if len(ip_list) == 0: # raise TypeError #主动触发异常 assert len(ip_list) > 0 #当不满足条件时触发异常 (断言失败触发异常) #AssertionError # print(‘从ip_list取出ip地址,验证可用性‘) class MyException(BaseException): #自定义异常类型 def __init__(self,msg): super(MyException,self).__init__() self.msg=msg def __str__(self): return ‘<%s>‘ %self.msg #__str__ 的返回值必须是str类型 raise MyException(‘类型错误‘) #异常的值:print(obj) 会打印 MyException(‘类型错误‘) (打印对象) #__main__.MyException: <类型错误>
#异常处理是在异常一定会发发生但是有不可以用代码处理的情况下使用的
二、socket编程
1、网络基础
http://www.cnblogs.com/linhaifeng/articles/5937962.html