python之路——第三块(函数异常及socket通信)

异常处理

一段代码可能会出现异常报错,为了不让用户看到程序运行错误,可以利用try和except来捕捉这个异常,并报告错误信息。

try:
    a = 1
    b = "2"
    print(a+b)
except TypeError as e:
    print("数字和字符串不能相加",e)

  如果不要后面的as e,会直接打印数字和字符串不能相加,e是系统错误的提示;也可以捕捉多个异常,如果不知道异常的名称,可以不用写,例如:

try:
    a = 1
    b = "2"
    print(a+b)
except:
    print("错误")

  万能异常,Exception,它可以捕捉任意异常

try:
    a = 1
    b = "2"
    print(a+b)
except Exception as e:
    print("错误",e)

也可以自己创建一个异常:

class DZK(Exception):
    def __init__(self, msg):
        self.message = msg

    def __str__(self):
        return self.message

try:
    raise DZK(‘我的异常‘)
except DZK as e:
    print(e)

  常见的异常

AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的

  

时间: 2024-10-20 12:28:28

python之路——第三块(函数异常及socket通信)的相关文章

python之路(sed,函数,三元运算)

python之路(sed,函数,三元运算) 一.sed集合 1.set无序,不重复序列 2.创建 1 se = {11,22,33,33,44} 2 list() #只要是一个类加上()自动执行 list __init__ 3 list = [11,22] 4 5 s1 = set(list) 6 print(s1) 7 8 #创建集合 9 s1 = {11,22} 10 s2 = set('可循环的') 11 12 #操作集合 13 s = set() 14 print(s) 15 s.add

七日Python之路--第三天(之不安分 wxPython)

Python有好多个GUI框架,wxPython比较流行,so just do it.....   Win下各种不爽,又换Ubuntu 跟着教程做个记事本.视频地址:http://www.pythoner.cn/course/topic/wxPython-gui/ (一)wxpython的安装 Ubuntu下的安装,还是比较简单的. #使用:apt-cache search wxpython 测试一下,可以看到相关信息 [email protected]:~/Python$ apt-cache 

七日Python之路--第三天(之初试Django 2-2)

接上文.前面(1)(2)部分已经实现浏览器访问工程项目,并且能后台管理新创建的app. (二)第一个Django的app (3)教你开始写Django1.6的第1个app 前面已经完成了model(M)的设置.剩下的只有view(V)和urls(C)了.Django的视图部分,由views.py 和 templates完成. 在polls中,我们将创建4个视图: "index" 列表页 – 显示最新投票. "detail" 投票页 – 显示一个投票的问题, 以及用户

七日Python之路--第三天

之前由于看基础看的觉着没意思,才去提前看一下Django的.现在突然不知到该干啥了. 不管什么语言,官方文档是必须的.so........... 莫名浮躁,实在看不下去........   待会研究 re 吧.虽然之前研究过,但许久不使用,忘的差不多了....Orz. --2014.7.23 18:37 正则表达式: 1.掌握正则表达式的规则 正则表达式是一种小型,高度专业化的编程语言,内嵌Python中,通过re模块实现. 正则表达式模式被编译成一系列字节码,由用C编写的匹配引擎执行. 字符匹

[Python]网络爬虫(三):异常的处理和HTTP状态码的分类(转)

先来说一说HTTP的异常处理问题.当urlopen不能够处理一个response时,产生urlError.不过通常的Python APIs异常如ValueError,TypeError等也会同时产生.HTTPError是urlError的子类,通常在特定HTTP URLs中产生. 1.URLError通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生. 这种情况下,异常同样会带有"reason"属性,它是一个tuple(可以理解为不可变的数组),

Python之路【第六篇】:socket

Python之路[第六篇]:socket Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一就是"一切皆文件",对于文件用[打开][读写][关闭]模式来操作.socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO.打开.关闭

python学习之路-第三天-函数

函数 函数的定义关键字:def 使用global语句可以清楚地表明变量是在外面的块定义的 示例:(函数运行完毕后x的值是2) #!/usr/bin/python # Filename: func_global.py def func(): global x print 'x is', x x = 2 print 'Changed local x to', x x = 50 func() print 'Value of x is', x 可以给形参加上默认值,默认参数是不可变的,而且只有在形参表末

Python之旅.第三章.函数3.30

一.迭代器 1.什么是迭代?:迭代是一个重复的过程,并且每次重复都是基于上一次的结果而来 2.要想了解迭代器到底是什么?必须先了解一个概念,即什么是可迭代的对象?可迭代的对象:在python中,但凡内置有__iter__方法的对象,都是可迭代的对象num=1 以下都是可迭代的对象str1='hello'list1=[1,2,3]tup1=(1,2,3)dic={'x':1}s1={'a','b','c'}f=open('a.txt','w',encoding='utf-8') 3.迭代器:迭代取

Python之路(第三十八篇) 并发编程:进程同步锁/互斥锁、信号量、事件、队列、生产者消费者模型

一.进程锁(同步锁/互斥锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理. 例子 #并发运行,效率高,但竞争同一打印终端,带来了打印错乱 from multiprocessing import Process import os,time def work(): print('%s is running' %os.getpid()) time.sleep(2) print('