异常
  程序在运行过程当中,不可避免的会出现一些错误,比如:
    使用了没有赋值过的变量
    使用了不存在的索引
    除0
    ...
  这些错误在程序中,我们称其为异常。
  程序运行过程中,一旦出现异常将会导致程序立即终止,异常以后的代码全部都不会执行!

处理异常
  程序运行时出现异常,目的并不是让我们的程序直接终止!
  Python是希望在出现异常时,我们可以编写代码来对异常进行处理!

  try语句
    try:
      代码块(可能出现错误的语句)
    except 异常类型 as 异常名:
      代码块(出现错误以后的处理方式)
    except 异常类型 as 异常名:
      代码块(出现错误以后的处理方式)
    except 异常类型 as 异常名:
      代码块(出现错误以后的处理方式)
    else:
      代码块(没出错时要执行的语句)
    finally:
      代码块(该代码块总会执行)

  try是必须的 else语句有没有都行
  except和finally至少有一个

可以将可能出错的代码放入到try语句,这样如果代码没有错误,则会正常执行,
  如果出现错误,则会执行expect子句中的代码,这样我们就可以通过代码来处理异常
  避免因为一个异常导致整个程序的终止

异常的传播(抛出异常)
  当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播,
  如果函数中没有对异常进行处理,则异常会继续向函数调用处传播,
  如果函数调用处处理了异常,则不再传播,如果没有处理则继续向调用处传播
  直到传递到全局作用域(主模块)如果依然没有处理,则程序终止,并且显示异常信息

  当程序运行过程中出现异常以后,所有的异常信息会被保存一个专门的异常对象中,
  而异常传播时,实际上就是异常对象抛给了调用处
  比如 : ZeroDivisionError类的对象专门用来表示除0的异常
      NameError类的对象专门用来处理变量错误的异常
      ....

在Python为我们提供了多个异常对象

抛出异常
  - 可以使用 raise 语句来抛出异常,
  raise语句后需要跟一个异常类 或 异常的实例

python异常(理论知识)的更多相关文章

  1. python socket理论知识

    一.socket理论: 发现一个很好的文章,一个高手写的,我也就不再做搬运工了,直接连接吧,对理论感兴趣的可以去看看! http://www.cnblogs.com/dolphinX/p/346054 ...

  2. python 全栈开发,Day41(线程概念,线程的特点,进程和线程的关系,线程和python 理论知识,线程的创建)

    昨日内容回顾 队列 队列 : 先进先出.数据进程安全 队列实现方式: 管道 + 锁 生产者消费者模型 : 解决数据供需不平衡 管道 双向通信 数据进程不安全 EOFError: 管道是由操作系统进行引 ...

  3. python全栈开发,Day41(线程概念,线程的特点,进程和线程的关系,线程和python理论知识,线程的创建)

    昨日内容回顾 队列 队列:先进先出.数据进程安全 队列实现方式:管道+锁 生产者消费者模型:解决数据供需不平衡 管道 双向通信,数据进程不安全 EOFError: 管道是由操作系统进行引用计数的 必须 ...

  4. 线程概念( 线程的特点,进程与线程的关系, 线程和python理论知识,线程的创建)

    参考博客: https://www.cnblogs.com/xiao987334176/p/9041318.html 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运 ...

  5. Web前端理论知识记录

      Web前端理论知识记录 Elena· 5 个月前 cookies,sessionStorage和localStorage的区别? sessionStorage用于本地存储一个会话(session) ...

  6. [转] DDD领域驱动设计(三) 之 理论知识收集汇总

    最近一直在学习领域驱动设计(DDD)的理论知识,从网上搜集了一些个人认为比较有价值的东西,贴出来和大家分享一下: 我一直觉得不要盲目相信权威,比如不能一谈起领域驱动设计,就一定认为国外的那个Eric ...

  7. 【Python】 零碎知识积累 II

    [Python] 零碎知识积累 II ■ 函数的参数默认值在函数定义时确定并保存在内存中,调用函数时不会在内存中新开辟一块空间然后用参数默认值重新赋值,而是单纯地引用这个参数原来的地址.这就带来了一个 ...

  8. Python总结篇——知识大全

    python基础 Python开发环境搭建 Python变量和基本数据类型 python基本数据类型之操作 python的语法规范及for和while python编码 python文件操作 pyth ...

  9. JVM培训之一些GC算法的理论知识

    很精彩的一次内部分享,介绍了大部分的GC算法理论知识,JVM博大精深,本篇文章只是结合本次内部分享总结的一些理论知识,如果有大佬有疑问,欢迎留言指出! Concurrent:并发,程序一边运行一边做G ...

  10. 学习《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码

    入门神经网络深度学习,推荐学习<深度学习入门:基于Python的理论与实现>,这本书不来虚的,一上来就是手把手教你一步步搭建出一个神经网络,还能把每一步的出处讲明白.理解神经网络,很容易就 ...

随机推荐

  1. Python--day41--线程锁

    1,死锁 死锁代码示例: import time from threading import Lock, Thread noodle_lock = Lock() fork_lock = Lock() ...

  2. git update-index --assume-unchanged

    有的时候,不小心提交了一个配置文件config.php,每次在本地开发测试之后,都需要更改配置文件.相当麻烦. 使用 git update-index --assume-unchanged   /pa ...

  3. 【u201】矩形覆盖

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有N个矩形,矩形的底边边长为1,且均在X轴上,高度给出,第i个矩形的高为h[i],例如h = [3, ...

  4. Vue中的scoped及穿透方法(修改第三方组件局部的样式)

    何为scoped? 在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组 ...

  5. 一排盒子,jq鼠标移入的盒子动画移出停止动画,css动画

    css .category > div.active { animation: servicetobig 0.5s ease 1 forwards; } @keyframes serviceto ...

  6. git 常用操作命令(Common operation)

    win10清除已登录账号密码方法 打开控制面板(Control Panel): 选择用户账户(User Accounts): 选择管理你的凭据(Credential Manager): 管理windo ...

  7. ie6,7不支持display:inline-block;

    解决方案: display:inline-block; *display:inline;*zoom:1; ie6:* _ ,ie7:*

  8. codeforces 1167B Lost Numbers

    传送门:https://codeforces.com/contest/1167/problem/B 题意: 交互题:现在你有6个数4, 8, 15, 16, 23, 42组成的某种组合,你可以询问系统 ...

  9. $51nod\ 1522$ 上下序列 $dp$

    正解:$dp$ 解题报告: 传送门$QwQ$ 一年过去了$gql$还是不咋会这题,,,好菜昂我的$NOIp$必将惨败了$kk$ 考虑从大到小枚举两个相同的数填哪儿,根据那个限制,十分显然的是这两个数必 ...

  10. $CH$3801 $Rainbow$的信号 期望+位运算

    正解:位运算 解题报告: 传送门! 其实就是个位运算,,,只是顺便加了个期望的知识点$so$期望的帕并不难来着$QwQ$ 先把期望的皮扒了,就直接分类讨论下,不难发现,答案分为两个部分 $\left\ ...