zoukankan      html  css  js  c++  java
  • python基础20 -------python中的异常处理

    一、python程序中的会出现的错误。

      1、语法错误:这种错误根本过不了python解释器的语法检测阶段,必须在程序执行之前进行改正。

      2、逻辑错误:这种错误虽然过了语法检测阶段但是程序在执行的过程中会报错,这就产生了程序的异常。
      3、python中程序异常的种类:

        IndentationError 语法错误,代码没有正确对齐。

        SyntaxError Python代码非法,代码不能编译(语法错误)。

         AttributeError 试图访问一个对象没有的属性(未知的对象属性)。

         IOError 输入/输出异常,基本上是无法打开文件。

        OSError 操作系统产生的异常。

        ImportError 无法引入模块或包,基本上是路径问题或名称错误。

        IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]。

        KeyError 试图访问字典里不存在的键。

          KeyboardInterrupt Ctrl+C被按下。

        NameError 尝试访问一个不存在的变量。

        TypeError 传入对象类型与要求的不符合(不同类型间的无效操作)。

        UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量, 导致你以为正在访问它。        ValueError 传入一个调用者不期望的值,即使值的类型是正确的。  

        ZeroDivisionError  除数为零

      4、python解释器抛出异常的格式:

        

    二、异常处理办法

      1、什么是异常处理:

        当python解释器检测到语法错误或者是执行程序时遇到错误语法,那么该解释器就会出发该错误语法异常,程序员会编写特定代码来捕捉这类异常,当成功捕捉之后会进入另一个分支,执行分支内的代码,让程序不会崩溃,这就是异常处理。

      2、为什么要异常处理?

        当python解释器检查错误语法时会抛出异常终止程序,但是当我们异常处理了之后程序会继续处理后面的代码。

      3、如何进行异常处理?

        之前学习过的if判断式可以进行异常处理,如图所示:

        

        注:虽然if判断式可以进行异常处理,但是if判断式是在异常抛出之前进行一个异常的判断,如果有了则执行后面代码,而且只能对同一  个错误类型的不同代码进行判断,如果在一个程序中频繁出现这样的if判断,会降低代码的可读性,降低代码的执行效率。

      4、python中为每个异常定制了一个类型,然后提供了一种特定的语法结构来进行异常处理,如图所示。

      

      注:这个异常处理机制是在异常产生后进行处理的,当try内的程序产生异常后会在except内寻找是否有该异常的处理方法,如果没有还是会报错,终止所有程序。如果有则只会终止try内程序,继续后面程序。

     三、异常处理高级用法

      1、如图所示:

        

      2、如图所示:自定义异常

        

      3、如图所示:断言

        

        当满足assert这个断言的条件时会执行下面代码,否则就会报错,然后程序报错会被try捕捉到执行except的代码。

      

  • 相关阅读:
    MVC分部视图@Html.Partial
    MVC分部视图@Html.Partial
    DevExpress ASP.NET
    DevExpress ASP.NET
    @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
    @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
    MVC中@Html.Action的用法(类似自定义控件)
    MVC中@Html.Action的用法(类似自定义控件)
    C#.Net下的防抖Debounce和节流阀Throttle功能实现
    C#.Net下的防抖Debounce和节流阀Throttle功能实现
  • 原文地址:https://www.cnblogs.com/xuanan/p/7146314.html
Copyright © 2011-2022 走看看