• 异常处理


    1.单分支

    l=["login","register"]
    for num, i in enumerate(l ,1):
        print(num,i)
    try:
        num=int(input("num>>>"))
        print(l[num-1])
    except ValueError:
        print("请输入一个数字")

    1 login
    2 register
    num>>>fdgfdgfdgfdgfdgfdgsdfg
    请输入一个数字

     2.多分支

    l = ['login','register']
    for num,i in enumerate(l,1):
        print(num,i)
    try:
        num = int(input("nnn<<<"))
        print(l[num-1])
    except ValueError:
        print("请输入一个数字,并且是整数")
    except IndexError:
        print("只能输入1或者2,不能超过2")


    1 login
    2 register
    nnn<<<4
    只能输入1或者2,不能超过2

     3.多分支合并

    l = ['login','register']
    for num,i in enumerate(l,1):
        print(num,i)
    
    try:
        num = int(input('num >>>'))
        print(l[num - 1])
    except (ValueError,IndexError) :
        print('您输入的内容不合法')

    1 login
    2 register
    num >>>l
    您输入的内容不合法

    万能异常    在python的异常中,Exception 表示万能异常,可以捕捉任意的异常

    except Exception as e   将具体的错误信息打印出来
    s1="hello"
    try:
        int(s1)
    except Ecception as e :
        print(e)
    
    invalid literal for int() with base 10: 'hello'
    
    
    多分支 + 万能异常 : 万能异常应该永远放在异常处理的最下面
    def buy():
    print('buy')
    name

    def back():
    print('back')
    [][1]

    def show():
    print('show')
    1/0

    def main():
    l = [('购物',buy),('退货',back),('查看订单',show)]
    while True:
    for num,i in enumerate(l,1):
    print(num,i[0])
    try:
    num = int(input('num >>>'))
    print(l[num - 1])
    func = l[num - 1][1]
    func()
    except (ValueError,IndexError) :*********************************
    print('您输入的内容不合法')
    except Exception as e:*******************************
    print(e)
    #print(e.args,e.__traceback__.tb_lineno,e.__traceback__.tb_frame)
    print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
    main()

     总结:

    try:

      pass

    except(ValueError,IndexError)

    是针对性的处理

    except Exception as e :

      print(e)

    通用性的处理

    异常处理的其他操作

    else分支:当try中的代码没有异常时,就执行else分支。

    finally分支:不论try中的内容有没有异常,都会执行finally分支中的内容,常用来回收一些操作系统的资源:

    主要进行数据库的连接,打开文件的句柄,网络连接等。

    try:
    #     f = open('www','w')
    #     f.read()
    # finally:   # 即使遇到报错,程序结束,也会先执行finally中的代码,然后再结束程序
    #     f.close()
    #     print('文件已经关闭了')

    主动抛出异常断言:

    raise ValueError('你写的不对')

    断言:assert

    只接受布尔值

    自定义异常:

    在最外层的异常处理应该在所有开发完成之后猜进行异常处理

  • 相关阅读:
    Java
    Java
    Java
    Java
    运算问题
    Idea常用快捷键
    java变量和变量命名规范
    java常用数据类型和基本数据类型转换和进制和大数运算
    java注释和标识符规范
    使用命令行生成的第一个java程序
  • 原文地址:https://www.cnblogs.com/wqzn/p/9519318.html
Copyright © 2020-2023  润新知