python笔记——try except方法

系统 1622 0

本文结构:
1、常见错误总结
2、try except方法

一、常见错误总结


  • AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
  • IOError 输入/输出异常;基本上是无法打开文件
  • ImportError 无法引入模块或包;基本上是路径问题或名称错误
  • IndentationError 语法错误(的子类) ;代码没有正确对齐
  • IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
  • KeyError 试图访问字典里不存在的键
  • KeyboardInterrupt Ctrl+C被按下
  • NameError 使用一个还未被赋予对象的变量
  • SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
  • TypeError 传入对象类型与要求的不符合
  • UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
    导致你以为正在访问它
  • ValueError 传入一个调用者不期望的值,即使值的类型是正确的

二、try except方法


有时候我们写程序的时候,会出现一些错误或异常,导致程序终止,这个时候我们需要捕获错误的类型,让代码更灵活,下面介绍下常用的try except来进行捕获异常的方法。

  1. 处理单个异常:

  • 语法:
            
              
                >>
              
              
                >
              
              
                try
              
              
                :
              
              
                >>
              
              
                >
              
                   code

              
                >>
              
              
                >
              
              
                except
              
               Error1 
              
                as
              
               e
              
                :
              
              
                #处理Error1异常
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              e
              
                )
              
            
          
  • demo
            
              
                >>
              
              
                >
              
              
                try
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              
                5
              
              
                /
              
              
                0
              
              
                )
              
              
                #该行为测试的语句
              
              
                >>
              
              
                >
              
              
                except
              
                ZeroDivisionError 
              
                as
              
               e
              
                :
              
              
                ## 如果测试的语句出现except后的异常(例中的ZeroDivisionError),则执行下一行代码,否则跳过此模块
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              e
              
                )
              
              
                ## 打印错误名称
              
              
division by zero        
              
                ##执行结果
              
            
          
  1. 分开处理多个异常:

  • 语法
            
              
                >>
              
              
                >
              
              
                try
              
              
                :
              
              
                >>
              
              
                >
              
                   code

              
                >>
              
              
                >
              
              
                except
              
               Error1 
              
                as
              
               e
              
                :
              
              
                #处理Error1异常
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              e
              
                )
              
              
                >>
              
              
                >
              
              
                except
              
               Error2 
              
                as
              
               e
              
                :
              
              
                #处理Error2异常    
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              e
              
                )
              
            
          
  • demo
            
              
                >>
              
              
                >
              
               a 
              
                =
              
              
                [
              
              
                0
              
              
                ,
              
              
                1
              
              
                ]
              
              
                >>
              
              
                >
              
              
                try
              
              
                :
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              a
              
                [
              
              
                3
              
              
                ]
              
              
                )
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              
                5
              
              
                /
              
              
                0
              
              
                )
              
              
                ##语句在上一行就遇到错误传到except里面去了,未检测到此语句 
              
              
                >>
              
              
                >
              
              
                except
              
               ZeroDivisionError 
              
                as
              
               e
              
                :
              
              
                #处理Error1异常
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              e
              
                )
              
              
                >>
              
              
                >
              
              
                except
              
               IndexError 
              
                as
              
               e
              
                :
              
              
                #处理Error2异常    
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              e
              
                )
              
              
                list
              
               index out of 
              
                range
              
            
          
  1. 统一处理多个异常:

  • 语法
            
              
                >>
              
              
                >
              
              
                try
              
              
                :
              
              
                >>
              
              
                >
              
                   code

              
                >>
              
              
                >
              
              
                except
              
              
                (
              
              Error1
              
                ,
              
              Error
              
                )
              
              
                :
              
              
                ###无论遇到什么异常,都只会执行下一行要打印的一种东西
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              e
              
                )
              
            
          
  1. 没有异常,则走else部分的逻辑代码

  • 语法:
            
              
                >>
              
              
                >
              
              
                try
              
              
                :
              
              
                >>
              
              
                >
              
                   code

              
                >>
              
              
                >
              
              
                except
              
              
                (
              
              Error1
              
                ,
              
              Error2
              
                ,
              
              
                .
              
              
                .
              
              
                .
              
              
                )
              
              
                as
              
               e
              
                :
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              e
              
                )
              
              
                >>
              
              
                >
              
              
                else
              
              
                :
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              
                "没有错误,执行"
              
              
                )
              
            
          
  • demo
            
              
                >>
              
              
                >
              
              
                try
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              
                5
              
              
                /
              
              
                1
              
              
                )
              
              
                >>
              
              
                >
              
              
                except
              
                ZeroDivisionError 
              
                as
              
               e
              
                :
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              e
              
                )
              
              
                >>
              
              
                >
              
              
                else
              
              
                :
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              
                "没有错误"
              
              
                )
              
              
没有错误

            
          
  1. 不管有没有错误,都会执行finnally中的代码
    例如在对文件进行操作时候,如果文件读写过程中出现错误,无法关闭,可以将f.close()放在finally中,这样无论是否有错误,文件都会关闭

            
              
                >>
              
              
                >
              
              
                try
              
              
                :
              
              
                >>
              
              
                >
              
                   code

              
                >>
              
              
                >
              
              
                except
              
              
                (
              
              Error1
              
                ,
              
              Error2
              
                ,
              
              
                .
              
              
                .
              
              
                .
              
              
                )
              
              
                as
              
               e
              
                :
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              e
              
                )
              
              
                >>
              
              
                >
              
              
                else
              
              
                :
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              
                "没有错误,执行"
              
              
                )
              
              
                >>
              
              
                >
              
               finnally
              
                :
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              
                "不管有没有错,都执行finnally"
              
              
                )
              
            
          

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论