正文共:2122 字 6图预计阅读时间:6分钟

每日分享

Everything you can imagine is real.

敢于梦想的终将被实现。

小闫语录:

世界上的知识分为下列几种:知道自己知道的,知道自己不知道的,不知道自己知道的,不知道自己不知道的。只要能被想象到的,终有实现的方法。

前言

1.打开文件使用 open,关闭文件使用 close。

2.读数据使用 read,写内容使用 write。

3.文件或文件夹的相关操作使用模块 os 。

学习目标

1.了解什么是异常

2.学会如何捕获异常

3.了解如何抛出异常

1.异常

我们在执行程序的时候,总是会报一些错误,那扎眼的一抹红色,是令所有程序员头疼的噩梦。今天就详细讲讲这些错。

Python 中错误有两种,一种是语法错误,一种是异常。

1.1 语法错误

语法错误为写的代码不符合语法规则。比如大家一不小心忘记写个冒号,一不小心函数写错一个字母之类的粗心错误。当我们在条件判断时,忘记写冒号,会显示如下错误:

ifTrue

^

SyntaxError:invalid syntax

这时候先不要慌乱,也不要想着怎么解决,第一步先打自己脑门一下,连基础知识都没记住!语法分析器指出了出错的一行,并且在最先找到错误的位置标记了一个小小的 ^(箭头),怕你看不见,找不到错误。瞧,多贴心?

1.2 异常

有些人会问,我的 Python 程序的语法是正确的,检查了很多遍呢,真的!但是为什么运行时还会报错?那就说明你遇到了异常。比如下列的错误:

# 示例1:0不能做除数

10/0

ZeroDivisionError:division by zero

# 示例2:变量num没做定义

print(num)

NameError:name'num'isnotdefined

# 示例3:r访问模式的特点

open("hm.txt","r")

FileNotFoundError:[Errno2]Nosuch fileordirectory:'xxoo.txt'

这些问题就是有点深度的问题了,要注意了!其实也没必要太紧张,错误信息显示的很详细,会告诉你在哪里错误,是什么错误,只要根据提示都会解决,唯一的要求就是会英文。多么痛的领悟 ~

先来尝试翻译一个错误:

FileNotFoundError:[Errno2]Nosuch fileordirectory:'xxoo.txt'

# 文件未发现:没有 `xxoo.txt`这个文件或者目录

瞧,多么直白

对于错误的信息还要有一些基本认识:

# 例如示例异常:

NameError:name'num'isnotdefined

# NameError -> 异常类型

# name 'num' is not defined-> 异常的信息描述

1.3 捕获异常

程序开发时,很难将所有的特殊情况都处理的面面俱到,通过捕获异常可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性。

当对某些代码的执行不能确定是否正确,可以增加 try(尝试)来 捕获异常。捕获异常的语法如:

try:

# 尝试执行的代码

except错误类型1:

# 针对异常类型1,对应的代码处理

except错误类型2:

# 针对异常类型2,对应的代码处理

except(错误类型3,错误类型4):

# 针对异常类型3 和 4,对应的代码处理

exceptExceptionase:

# 针对未知异常,对应的代码处理

# 变量e保存的是异常的信息描述

else:

# 只有在没有异常时才会执行的代码

finally:

# 无论是否有异常,都会执行的代码

下面看一个实例:

try:

a=1/0

exceptZeroDivisionError:

print("分母不能为0")

finally:

print("捕获错误执行完成")

1.4 异常的传递

当函数或者方法执行代码时出现异常,会将异常传递给函数或者方法的调用一方,如果传递到主程序,仍然没有异常处理,程序才会被终止。

需求:定义函数 demo1() 完成输入 num,定义函数 demo2() 调用 demo1(),在主程序中调用 demo2()。

defdemo1():

print(num)

defdemo2():

demo1()

demo2()

在执行以上代码,会发生异常,可以使用下面代码进行捕获异常。

try:

demo2()

exceptNameError:

print("请输入正确的名字")

exceptExceptionasresult:

print("未知错误 %s"%result)

在开发中,当在主函数中调用的其他函数时,可以只为主函数增加异常捕获,因为Python中的异常是可以传递的,所有只要出现异常,都会传递到主函数的异常捕获中。这样就不需要在代码中,增加大量的异常捕获,能够保证代码的整洁。

作业

1.书写一个函数,故意犯错,然后进行异常捕获。

2.自定义两个函数 A 和 B,验证异常的传递。

优质文章推荐:

每天二十分钟学习python_每天 3 分钟,小闫带你学 Python(二十五)相关推荐

  1. 擅用沟通技巧:二十五分钟等于二十五万美元

    擅用沟通技巧:二十五分钟等于二十五万美元 推销需要沟通,沟通需要技巧,有些人开口说话就能赚钱,字字千金,本文就带你走进美国的"超级推销大王"法兰克·贝德佳怎样在二十五分钟拿下二十五 ...

  2. 未处理异常和C++异常——Windows核心编程学习手札之二十五

    未处理异常和C++异常 --Windows核心编程学习手札之二十五 当一个异常过滤器返回EXCEPTION_CONTINUE_SEARCH标识符时是告诉系统继续上溯调用树,寻找另外的异常过滤器,但当每 ...

  3. 【Vue2.0学习】—Vuex工作原理图(二十五)

    [Vue2.0学习]-Vuex工作原理图(二十五) 一. Vuex 是什么? 概念: 专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对Vue应用中多个组件的共享状态进行集中式的管理(读/写 ...

  4. 零基础带你学习MySQL—unique 唯一(二十五)

    零基础带你学习MySQL-unique 唯一(二十五) unqiue 使用细节 如果没有指定 not null 则 unique 字段可以有多个 null 如果一个列(字段) 是 unique not ...

  5. JavaScript学习(二十五)—实现无缝滚动

    JavaScript学习(二十五)-实现无缝滚动 效果如下: 代码如下: <!DOCTYPE html> <html lang="en"><head& ...

  6. 深度学习之图像分类(二十五)-- S2MLPv2 网络详解

    深度学习之图像分类(二十五)S2MLPv2 网络详解 目录 深度学习之图像分类(二十五)S2MLPv2 网络详解 1. 前言 2. S2MLPv2 2.1 S2MLPv2 Block 2.2 Spat ...

  7. 学习python第十五天,面对对象

    学习python第十五天,面对对象 面对对象又叫劝退对象,要么劝退你的对象,要么python劝退你,hhhh 开玩笑,但是这块知识点确实比较难 面向对象编 面向对象编程 指令式编程---->面向 ...

  8. 二十五个深度学习相关公开数据集

    转 [干货]二十五个深度学习相关公开数据集 2018年04月18日 13:42:53 阅读数:758 (选自Analytics Vidhya:作者:Pranav Dar:磐石编译) 目录 介绍 图像处 ...

  9. 【AI学院】有三AI博士小姐姐带你学深度学习之图像识别下篇,附上篇回顾

    带学营第一期(上)圆满结束回顾 有三 AI 深度学习之图像识别带学营第一期(上)圆满结束,这一期我们主要的培训内容是深度学习基础+项目实战(人脸表情识别和鸟类细粒度识别). 以上的课程可以说是干货满满 ...

  10. 零基础带你学习MySQL—单行子查询和多行子查询(二十二)

    零基础带你学习MySQL-多行子查询(二十二) 一.什么是子查询? 子查询是指嵌入在其它 sql 语句中的 select 语句,也叫嵌套查询 二.什么是单行子查询? 单行子查询是指只返回一行数据的子查 ...

最新文章

  1. QQ无法安装,不用着急,用毒霸2011来解决
  2. 走进AngularJs(二) ng模板中常用指令的使用方式
  3. java 短路判断_细数Java最坑爹的10大功能点
  4. Linux中inode值是什么?
  5. QuickWAP 2.x注册方法和购买注意事项
  6. 统计与自适应信号处理_时间序列分析 自协方差/自相关系数/偏自相关系数
  7. python信息安全工具之端口扫描器
  8. 第四章 Python数据预处理之划分训练集与测试集
  9. 基于STM32的计算器
  10. php pdo连接oracle乱码,PHP编程:php pdo oracle中文乱码的快速解决方法
  11. 前端主流框架双向绑定实现原理简述
  12. udp接受_电脑网络基础知识:用户数据报协议(UDP)的学习
  13. 报告女王陛下,我找到了可以吃的塑料杯!
  14. Java小知识:多张图片合并成一张
  15. 怎样用手机将照片清晰度设置300dpi?
  16. Xdebug中文文档-变量打印特性
  17. JavaScript BOM和DOM部分
  18. [重磅] 让HTML5达到原生的体验 系列之一 避免切页白屏
  19. SQL server 快捷键整理
  20. 想创业,就别输不起!--leo看赢在中国第三季(7)

热门文章

  1. 【Unity】Geometry Shader实现
  2. asp.net ajax客户端框架如何调用Page Method
  3. jquery 输入框,单选按钮,下拉列表和复选框的使用
  4. Python学习-9.Python函数定义
  5. ASP.NET中 Bin,App_Browser,App_code,App_Data,App_Theme 等文件
  6. .NET简谈互操作(三:基础知识之DllImport特性)
  7. python 合并与连接
  8. ArcGIS 掩膜提取
  9. ListView乱谈之ListView的布局
  10. vlc_for_android(基于git-3.0.0)快速集成并播放电视节目直播