zoukankan      html  css  js  c++  java
  • 异常处理 try

    语法错误

    这种错误的不能使用异常处理,你自己粗心写错怪谁,哼哼哼

    比如说少冒号啦,丢了括号啦

    逻辑错误

    try:
        num = int(input("请输入数字"))
        print(111)
    except ValueError:
        print(666)
    #  输入 1q
    #  输出 666
    

    结构一 : 单分支

    try:
        num = int(input("请输入数字:"))
        # 出现 ValueError 错误之后,直接跳到 except 语句
        dic = {'name':"海狗"}
        print(dic['age'])
        print(111)
    except ValueError:
        print(666)
    ''''
    请输入数字:1q
    666
    '''
    

    **结构二 : 多分支 **

    try:
        num = int(input('请输入数字:'))
        # 输入的时候  出现ValueError
        # 错误之后,直接跳转到except 语句
        dic = {'name':'嘉欣'}
        print(dic['age'])
        l1 = [1,2]
        print(l1[100])
        print(111)
    except ValueError:
        print("输入的有非数字元素")
    except KeyError:
        print('没有此键')
    except IndexError:
        print('没有此下标')
    print(666)
    '''
    请输入数字:1 去
    输入的有非数字元素
    666
    
    
    '''
    

    结构三 : 万能异常 处理所有 Python识别的异常

    try:
        dic = {'name':'海狗'}
        # print(dic['age'])
        l1 = [1,2]
        print(l1[100])
        print(111)
        for i in 123:   #  'int' object is not iterable
            pass
    except Exception as e:
        print(e)
    print(666)
    ''''
    list index out of range
    666
    直接说明错的原因了
    '''
    
    还挺好玩的
    
    
    什么时候用万能 ? 什么时候用分支 ?
    万能 : 如果你对错误信息不关心,只是想要排除错误让程序继续运行. 用万能异常.
    
     分支 : 你对错误信息要进行明确的分流,让你的程序多元化开发.
    

    结构四 : 多分支加万能异常

    def func():
        pass
    def func1():
        pass
    dic = {
        1 : func,
        2 : func1
    }
    try:
        num = int(input('请输入序号:'))
        dic[num]()
    except ValueError:
        print("请输入数字:")
    except KeyError:
        print("请输入范围内的序号")
    except Exception:
        print('程序出现意料之外的错误')
    '''
    请输入序号:111
    请输入范围内的序号
    '''
    

    结构5 : try else finally

    except 必须依赖于try, else必须依赖于except和try
    
    # finally只是依赖于try.
    

    在 return 结束函数之前,执行 fially 代码

    def func():
        try:
            print(111)
            return 555
        finally:
            print(222)
    print(func())
    '''
    111
    222
    555
    
    '''
    

    结构六 : 主动触发异常

    raise ValueError('出现了value错误')
    

    结构7: 断言: 展现出一种强硬的态度.

    name = 'alex'
    n1 = input('请输入:')
    assert name == n1
    print(111)
    print(222)
    
    这是啥意思啊,完全不懂呀输入直接就报错
    

    自定义异常

    Python 中给你提供的错误很多,但不是全部的错误

    class LiYeError(BaseException):
        def __init__(self,msg):
            self.msg = msg
        def __str__(self):
            return self.msg
    try:
        raise LiYeError('socket.connent.....')
    except LiYeError as e:
        print(e)
    #  socket.connent.....
    
  • 相关阅读:
    多项式牛顿迭代
    小明A+B
    分拆素数和
    选课时间
    今年暑假不AC
    Lowest Common Multiple Plus
    大小写转换问题(java程序)
    VS 中输入带空格的两个字符串
    整除的尾数
    不要62
  • 原文地址:https://www.cnblogs.com/hualibokeyuan/p/11342204.html
Copyright © 2011-2022 走看看