异常
  程序在运行过程当中,不可避免的会出现一些错误,比如:
    使用了没有赋值过的变量
    使用了不存在的索引
    除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. H3C NAPT配置举例

  2. Django入门8--Templates过滤器

    过滤器大大减少了开发的代码量

  3. 12627 - Erratic Expansion——[递归]

    Piotr found a magical box in heaven. Its magic power is that if you place any red balloon inside it ...

  4. dotnet 使用 Qpush 快速从电脑到手机推送文字

    在手机打字总不是方便,于是就有了 Qpush 这个工具,通过这个工具可以快速从电脑到手机推送文字. 但是这个工具没有找到客户端,于是我就给他写了一个库,通过这个库可以快速进行开发 先介绍QPush 快 ...

  5. Spring Boot Admin-应用健康监控后台管理

    Spring Boot Admin 用于监控基于 Spring Boot 的应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI. 1. 什么是Spring ...

  6. 大数据vs计算机

    大数据有两个方向,一个是偏计算机的,另一个是偏经济的.你学过Java,所以你可以偏将计算机 基础1. 读书<Introduction to Data Mining>,这本书很浅显易懂,没有 ...

  7. read、write 与recv、send区别 gethostname

    recv相对于read有什么区别呢? 其实它跟read函数功能一样,都可以从套接口缓冲区sockfd中取数据到buf,但是recv仅仅只能够用于套接口IO,并不能用于文件IO以及其它的IO,而read ...

  8. 关于redis有序集合http://www.runoob.com/redis/redis-sorted-sets.html

    redis有序集合和集合一样,元素都是字符串类型,而且不能重复 和普通集合不同的是它关联一个double类型的分数,redis是同个元素的分数来对元素进行排序 有序集合的元素是唯一的,但是分数可以重复 ...

  9. 超简单!pytorch入门教程(一):Tensor

    http://www.jianshu.com/p/5ae644748f21 二.pytorch的基石--Tensor张量 其实标量,向量,矩阵它们三个也是张量,标量是零维的张量,向量是一维的张量,矩阵 ...

  10. Spring Boot 定时+多线程执行

    Spring Boot 定时任务有多种实现方式,我在一个微型项目中通过注解方式执行定时任务. 具体执行的任务,通过多线程方式执行,单线程执行需要1小时的任务,多线程下5分钟就完成了. 执行效率提升10 ...