zoukankan      html  css  js  c++  java
  • Day27 python基础--异常处理

    一,异常处理:

      Q1:什么是异常?

        在编译阶段没问题,在执行阶段才报错

      Q2:什么是错误?

        实指语法错误:在程序之前就规避掉,不应该留到程序中来进行异常处理

      特点  

      异常出现之后,程序就不继续执行了,即便是放在try语句中的内容,在遇到报错之后也会中断这段语句的执行

    二,异常处理语法结构

    # try/except
    # try/except/else
    # try/finally
    # try/ except / finally
    # try/ except / else / finally
    #单分支
    l = ['登录','注册']
    try:
        num = int(input('num:'))
        print(l[num-1])
    except IndexError:
        print('no')
    
    #多分支
    l = ['登录','注册']
    try:
        num = int(input('num:'))
        print(l[num-1])
    except (IndexError,ValueError):
        print('no')
    
    l = ['登录','注册']
    try:
        num = int(input('num:'))
        print(l[num-1])
    except ValueError:
        print('no')
    except IndexError:
        print('no')
    
    #万能异常处理:exception
    l = ['登录','注册']
    try:
        num = int(input('num:'))
        print(l[num-1])
    except Exception:
        print('no')

      

      as语法:获取报错信息

    #as语法
    l = ['登录','注册']
    try:
        num = int(input('num:'))
        print(l[num-1])
    except (ValueError):
        print('No')
    except Exception as e:  #list index out of range   获取报错信息
        print(e)

    三,异常处理中的其他机制

    #else
    try:
        name = '122'
    except NameError:#ValueError:
        print('触发了一个value error')
    else:
        print('执行啦')  #主要目的:汇报这段try内的代码顺利的执行了
    #finally 无论如何都要执行
    #用于收尾工作,打开了一个文件,占用了一个网络资源,打开了一个和数据库的链接,最后执行finally内的语句,进行关闭,即便是程序崩溃的情况下
    def func2():
        try:
            f = open('content')
            name   #语法错误
        finally:   #报错,程序退出都会执行
            f.close()
            print('cloed')
    #raise NameError:主动触发异常
    raise NameError("name'name'is not defined")
    #自定义异常
    #一般不用于报错给用户,一般用于报错给开发者
    class EvaException(BaseException):  #默认继承BaseException
        def __init__(self,msg):
            super().__init__()
            self.msg = msg
        def __str__(self):    
            return self.msg
    
    raise EvaException('eva的异常')
    #断言 :类似于if语句assert 1==1 #满足条件继续执行下面的代码assert 1==2 #不满足条件,报错
  • 相关阅读:
    互联网+总决赛有感
    PyQt QListWidget修改列表项item的行高
    virtualenv 安装不同版本的虚拟环境的办法
    OpenDayLight Helium实验三 OpenDaylight二层转发机制实验
    OpenDayLight Helium实验一 OpenDaylight的C/S模式实验
    数据结构上机 经典进出栈问题
    【转载】解决telnet无法连接 Connection refused
    【Python初学者】准备
    OpenDayLight Helium安装
    Mininet实验 测量路径损耗率
  • 原文地址:https://www.cnblogs.com/lianyeah/p/9628374.html
Copyright © 2011-2022 走看看