笔记||Python3之异常处理

异常概念:1 - 代码执行产生错误,无法继续

              2 - 在异常前面代码是可以执行的  ---python是解释型的

              3 - 异常作用  --- 程序不要退出 - 可以继续执行 同时给予程序员一定的异常提示信息

              python有两种错误很容易辨认:语法错误和异常

              语法错误:while True:

                                 print('hello  world!')

              异常:print(10+(1/0))    #  ZeroDivisionError:disvision  by  zero  除数不能为0

异常的种类:try语句  -- 首先执行try子句(在关键字try和关键字except之间的语句),如果没有异常发生,忽略except的子句,try子句执行后结束。

                                如果在执行try子句的过程中发生了异常,那try子句余下的部分将被忽略。

                                如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。

                                如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。

       1 - NameError.name 'name'  is  not  defined   #  ‘name’没有被定义

       2 - ZeroDivisionError:disvision  by  zero   #  除数不能为0

       3 - FileNotFoundError:[Errno 2] No such file or diretory:'t:/'     # 找不到相应的文件或目录

       4 - IndexError:list index out of range     # 下标越界异常

异常的捕获+处理:  

       1 - 捕获预知异常

            try:

             except  异常类型:

                   处理内容

       

       2 - 多个预知异常:执行其中一个  ---  异常按照顺序抛出

            except  ZeroDivisionError:

                   print('您输入的值不能为0!')

            except  ValueError:

                   print('输入的值的类型不对!')

        

       3 - 捕获异常的具体信息   except  ZeroDivisionError  as  e:

       4 - 有时候我们并不知道会抛出什么异常  ---- 未知异常

              ①except  Exception  as e :   ----   捕获异常父类

              ②简写  except:

              ③捕获未知异常的具体信息:   tracback.format_exc()

       5 - 不管是否有异常,我们都要执行一段代码      finally:

       6 - else:  没有异常的情况下,要执行一段代码

        

       7 - 函数调用栈:① 解释器中断当前代码的执行,并抛出一个异常对象

                                  ② 并在函数的调用栈从下到上,层层的寻找捕获处理该异常的代码

                                  ③ 如果能找到就执行对应的代码

                                  ④ 如果不能则会一直找到最外层的函数,结束本次执行

        

        

       8 - 自定义异常  -----  类

                    继承自Exception

                    class NameTooLongError(Exception):

                                pass

原文地址:https://www.cnblogs.com/peipei-Study/p/11951848.html