• python异常处理


    什么是异常呢?

      异常既是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。就是程序在运行

    过程中出现了不可预知的错误,一般情况下,在python无法正常处理程序时就会发生一个异常。并且

    该错误没有对应的处理机制,那么就会以异常的形式表现出来;异常是python对象表示了一个错误,当

    出现错误时我们需要去捕获它,否则程序就会终止运行

    异常的种类分为两大类:

      1.语法错误

        是你在程序上能够立马解决的 但是这种错误不能被容忍 语法上的错误发现之后要立刻决。

      2.逻辑错误

        这种错误是可以被容忍的,因为一眼看不出来,针对逻辑上的错误可以采用异常处理机制进行捕获。

    常见的错误类型:

    OverflowError 数值运算超出最大限制
    AttributeError 对象没有这个属性
    IOError 输入/输出操作失败
    OSError 操作系统错误
    WindowsError 系统调用失败
    NAMERROR 名字错误
    SyntaxError 语法错误
    ValueError 值错误
    IndexError 索引错误
    ImportError 导入模块/对象失败

      

    如何避免异常呢:

      在我们认为可能出现bug的代码块上方try一下,要注意的是try内部的代码块越少越好

    语句结构:

      try:

        可能出现的代码

      except  出错的类型 as f:  #  将保错信息赋值给变量f   as 后面跟的是自定义的变量名

        出错之后的处理机制

    try:
        <statements>        #运行try语句块,并试图捕获异常
    except <name1>:
        <statements>        #如果name1异常发现,那么执行该语句块。
    except (name2, name3):
        <statements>        #如果元组内的任意异常发生,那么捕获它
    except <name4> as <variable>:
        <statements>        #如果name4异常发生,那么进入该语句块,并把异常实例命名为variable
    except:
        <statements>        #发生了以上所有列出的异常之外的异常
    else:
    <statements>            #如果没有异常发生,那么执行该语句块
    finally:
        <statement>         #无论是否有异常发生,均会执行该语句块。

    try-finally语句
      语法:
        try:
          可能触发异常的语句
        finally:
          最终语句
        说明:
          finally 子句不可以省略一定不存在except 子句
        作用:
          通常用try-finally语句来做触发异常时必须要处理的事情,无论异常是否发生,finally子

    句都会被执行try-finally 语句不会改变程序的(正常/异常)状态

    try:
        异常语句1
        异常语句2
        异常语句3
    except Exception: # 万能异常  所有的异常类型都能捕获。
          其它异常处理语句
        else: 
          未发生异常语句
        finally:
          最终语句
    
        作用:
          偿式捕获异常,得到异常通知,将程序由异常流程转为正常流程并继续执行

    UDP通信:

      UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法,也被称为数据

    报协议,它自带报头,没有双向通道,通信类似于发短信,当数据接收方收到发送方传来的信息

    时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否

    则将一直等待直到收到确认信息为止。

      基于以上特性:

        udp协议客户端允许发送空包

        udp协议不会黏包

        Udp协议服务端不存在的情况下客户端照样不会报错  就是如果在从发送方到接收方的传递

    过程中出现数据包的丢失,协议本身并不能做出任何检测或提示。

        udp协议支持并发  并发就是在操作系统中,是指一个时间段有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。并发是看起来像同时运行。

    UDP基本使用:

    # 客户端.py文件演示:
    
    import socket
    
    client = socket.socket(type=socket.SOCK_DGRAM)
    # 不需要建立连接  直接进入通信循环
    server_address = ('127.0.0.1',8080)
    while True:
        client.sendto(b'hello',server_address)
        data, addr = client.recvfrom(1024)
        print('服务端发来的数据',data)
        print('服务端的地址',addr)
    
    
    # 服务端.py文件演示:
    
    import socket
    
    server = socket.socket(type=socket.SOCK_DGRAM)  # UDP协议
    server.bind(('127.0.0.1',8080))
    # UDP不需要设置半连接池 它也没有半连接池的概念
    # 因为没有双向通道  不需要accept  直接就是通信循环
    while True:
        data, addr = server.recvfrom(1024)
        print('数据:',data)  # 客户端发来的消息
        print('地址:',addr)  # 客户端的地址
        server.sendto(data.upper(),addr)

      

  • 相关阅读:
    遍历DataTable内存数据的三种方法性能对比 dataTable.Select优先选择
    swf交互(中)LocalConnection
    在导入数据到sde之前判断sde是否安装,以及sde许可是否可用
    swf之间的交互(上)全局变量VS全局派发事件
    vs sql等帮助文档不显示
    检查sde数据库中的空间表结构通mdb表结构是否相同的思路
    datagrid 追加列号
    .net下的各种数据库的连接方法
    APP 上线Bundle identifier 创建
    APP 上线测试证书的制作(调试证书)
  • 原文地址:https://www.cnblogs.com/sweet-i/p/11323827.html
Copyright © 2020-2023  润新知