zoukankan      html  css  js  c++  java
  • 异常

    定义:异常是指在语法逻辑正确的前提下,出现的问题。在python里,异常就是一个类

    语法:

      try:
          尝试实现某个操作,
          如果没出现异常,任务就可以完成
          如果出现异常,将异常从当前代码块扔出去尝试解决异常
    
      except 异常类型1:
          解决方案1:用于尝试在此处处理异常解决问题
    
      except 异常类型2:
          解决方案2:用于尝试在此处处理异常解决问题
    
      except (异常类型3,异常类型4...)
          解决方案:针对多个异常使用相同的处理方式
    
      excpet Exception:
          解决方案:所有异常的解决方案
    
      else:
          如果没有出现任何异常,将会执行此处代码
    
      finally:
          管你有没有异常都要执行的代码
    # 简单异常案例
    # 给出提示信息
    try:
        num = int(input("Plz input your number:"))
        rst = 100/num
        print("计算结果是: {0}".format(rst))
    
    # 如果是多种error的情况
    # 需要把越具体的错误,越往前放
    # 在异常类继承关系中,越是子类的异常,越要往前放,
    # 越是父亲类的异常,越要往后放
    
    # 在处理异常的时候,一旦拦截到某一个异常,则不在继续往下查看,直接进行下一个
    # 代码,即有finally则执行finally语句块,否则就执行下一个大的语句
    except ZeroDivisionError as e:
        print("你特娘的输入的啥玩意儿")
        print(e)
        # exit是退出程序的意思
        exit()
    except NameError as e:
        print("名字起错了")
        print(e)
    
    except AttributeError as e:
        print("好像属性有问题")
        print(e)
        exit()
        
    # 所有异常都是继承自Exception
    # 如果写上下面这句话,任何异常都会拦截住
    # 而且,下面这句话一定是最后一个exception
    except Exception as e:
        print("我也不知道就出错了")
        print(e)
        
    except ValueError as e:
        print("NO>>>>>>>>>>>>>>>>>>")

    手动引发异常:当某些情况,用户希望自己引发一个异常的时候,可以使用raise关键字来引发异常

    # 自己定义异常
    # 需要注意:自定义异常必须是系统异常的子类
    class MyValueError(ValueError):
        pass
    
    try:
        print("我爱XXX")
        print(3.1415926)
        #手动引发一个异常
        #注意语法:raise ErrorClassName
        #因为MyValueError是ValueError的子类所以会打印出"ValueError"
        raise MyValueError
        print("还没完呀")
    except NameError as e:
        print("NameError")
    except ValueError as e:
        print("ValueError")
    except Exception as e:
        print("有异常")
    finally:
        print("我肯定会被执行的")
    
    #我爱XXX
    #3.1415926
    #ValueError
    #我肯定会被执行的
     
  • 相关阅读:
    函数的四种调用模式.上下文调用.call.apply
    caller.arguments.callee.eval
    面向对象相关知识总结
    javascript与jQuery的each,map回调函数参数顺序问题
    HTML5自定义属性的设置与获取
    [bzoj1911][Apio2010]特别行动队
    [学习笔记]乘法逆元
    [日常训练]普通计算姬
    [学习笔记]线性筛
    [学习笔记]数论(一)
  • 原文地址:https://www.cnblogs.com/wjw2018/p/10515820.html
Copyright © 2011-2022 走看看