• 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 #不满足条件,报错
  • 相关阅读:
    Scrum Works 1.84安装
    使用Sandcastle Styles 来生成VS2008的帮助文档.
    NDoc 用户指南(转)
    第一章 C#语言基础(C# Language Elements)
    SQL Server 2005 中删除重复记录
    SDE 远程连接
    C# 按钮美化技巧
    SOP 中的 Service
    C# DateTime赋值为null
    C# WebBrowser显示html字符串
  • 原文地址:https://www.cnblogs.com/lianyeah/p/9628374.html
Copyright © 2020-2023  润新知