`

python学习笔记9——第八章 异常

阅读更多

第八章  异常

 

1.

   (1)捕捉异常,try & except

>>> try:
	x = input("x: ")
	y = input("y: ")
	print x/y
except ZeroDivisionError:
	print "The second number can't be zero!"

	
x: 1
y: 0
The second number can't be zero!

 

   (2)捕捉异常并重新引发

>>> class MuffledCalculator:
	muffled = False;  #屏蔽开关的标志
	def calc(self, expr):
		try:
			return eval(expr)
		except ZeroDivisionError:
			if self.muffled:  #若屏蔽开着,则捕捉异常并进行处理
				print "Division by zero is illegal"
			else:  #若屏蔽关着,则捕捉异常并重新引发
				raise  #except捕捉到了异常,raise重新引发异常

			
>>> calculator = MuffledCalculator()
>>> calculator.calc('10/2')
5
>>> calculator.calc('10/0') #屏蔽机制未打开,因为muffled = False

Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    calculator.calc('10/0') #屏蔽机制未打开,因为muffled = False
  File "<pyshell#26>", line 5, in calc
    return eval(expr)
  File "<string>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> calculator.muffled = True  #打开屏蔽机制
>>> calculator.calc('10/0')
Division by zero is illegal

 

   (3)多个except,捕捉多个不同类型的异常

>>> try:
	x = input("x: ")
	y = input("y: ")
	print x/y
except ZeroDivisionError:  
	print "Y can't be zero!"
except TypeError:
	print "That wasn't a numbber, was it?"

	
x: 1
y: 'test'
That wasn't a numbber, was it?

 

   (4)一个except捕捉多个类型异常,效果同(3)

>>> try:
	x = input("x: ")
	y = input("y: ")
	print x/y
except(ZeroDivisionError, TypeError, NameError):  #NameError找不到名字(变量)时引发
	print 'Your numbers were bogus(wrong)...'

 

   (5)捕捉异常对象,想让程序继续运行,又想记录错误时应用

>>> try:
	x = input("x: ")
	y = input("y: ")
	print x/y
except(ZeroDivisionError, TypeError), e:  #多个异常时也只需提供一个参数e,是一个元组
	print "Invalid input:", e

	
x: 1
y: 0
Invalid input: integer division or modulo by zero

x: 1
y: 'test'
Invalid input: unsupported operand type(s) for /: 'int' and 'str'

 

   (6)捕捉所有异常,except后不加东西

>>> try:
	x = input("x: ")
	y = input("y: ")
	print x/y
except:
	print "Something wrong happend..."

	
x: 
Something wrong happend...
>>> 

 

   (7) try & except & else

>>> while True:
	try:
		x = input("x: ")
		y = input("y: ")
		print 'x/y is', x/y
	except:
		print "Invalid input. Please try again."
	else:  #只有在异常没发生,也就是输入正确的时候,循环才退出
		break

	
x: 1
y: 0
x/y is Invalid input. Please try again.
x: 2
y: 'test'
x/y is Invalid input. Please try again.
x: 
Invalid input. Please try again.
x: 1
y: 2
 

   (8) try & finally, try & except & finally, try & except & else & finally

          --不管是否发生异常,finally语句块一定会执行

>>> try:
	1/0
except NameError:
	print "Unknown variable"
else:
	print "That went well!"
finally:
	print "Cleaning up."

 

   实例

>>> def describePerson(person):
	print "Description of", person['name']
	print 'Age:', person['age']
	try:
		print 'Occupation: ' + person['occupation']  #不能用逗号连接,若用逗号,则在异常发生前就打印了pccupation
	except KeyError:  #键不存在
		pass

>>> person = {'name': 'Sun', 'age': 32}
>>> describePerson(person)  #捕获异常并处理
Description of Sun
Age: 32
#如果最后一句为print 'Occupation:', person['occupation']
#则出现
>>> describePerson(person)
Description of Sun
Age: 32
Occupation:
#所以要用加号连接,不用逗号,防止在异常发生前就被打印。
 

 

分享到:
评论

相关推荐

    Python学习笔记.pdf

    **标题与描述解析:** "Python学习笔记.pdf" 的标题直接指出了文档的主题——Python的学习资料,而描述的重复表明该文档的主要内容即为Python的学习笔记。标签 "Python" 进一步强调了主题。 **知识点:** 1. **...

    python开发总结——c程序员python之路

    #### Python学习资源推荐 为了更好地理解和掌握Python,以下是一些值得参考的学习资料: 1. **《Python参考手册》**:这本书详细介绍了Python的标准库以及各种特性,非常适合初学者用来了解Python的基本语法和功能...

    【精品分享】《Python编程从入门到实践》学习笔记——第二章 变量和简单数据类型

    第七章“while循环”将讲述重复执行代码的循环结构,第八章“函数”教你如何编写可重用的代码段。第九章“类”引入面向对象编程的概念,第十章“文件和异常”涉及读写文件和处理程序运行时可能出现的问题。 通过这...

    python入门笔记-李金(强烈推荐).zip

    **Python入门笔记——李金详解** 本篇笔记是基于作者李金的《python入门笔记-李金(强烈推荐)》的解析,旨在为初学者提供一份详尽的Python语言学习指南。这份笔记采用Jupyter Notebook的形式,使得学习过程更加...

    Python学习 —— 代码&amp;笔记(年11月30日、12月1日).zip

    【Python学习 —— 代码&笔记(年11月30日、12月1日)】 这篇笔记主要涵盖了在11月30日和12月1日期间进行的Python学习内容,其中包括了基本语法、数据结构、控制流程、函数、模块化编程等多个重要知识点。以下是...

    python——大作业.zip

    本压缩包"python——大作业.zip"包含了Python学习过程中的笔记和作业,旨在帮助用户复习巩固Python基础知识,并通过实践提升编程技能。 在Python的学习中,基础知识点主要包括以下几个方面: 1. **语法基础**:...

    python基础教程-学习笔记.zip

    这份“Python基础教程——学习笔记”涵盖了Python编程的基础知识,旨在帮助初学者快速入门。 1. **变量与数据类型** Python中的变量无需预先声明,可以直接赋值。支持的数据类型包括整型(int)、浮点型(float)...

    Java JDK 6学习笔记——ppt简体版

    Java JDK 6学习笔记主要涵盖了Java开发工具集(Java Development Kit)的第六个主要版本,这是一个重要的里程碑,因为它为开发者提供了许多新特性和改进。在这个版本中,Java平台的稳定性和性能得到了显著提升,同时...

    【python】——正则表达式(csdn)————程序.pdf

    在学习笔记中,示例代码展示了如何使用这些元字符和方法。比如,`re.findall('[a-zA-Z]{3,5}',a)`用于提取长度为3到5的字母单词。`re.findall('excel*',a)`和`re.findall('excel.?',a)`分别演示了贪婪和非贪婪模式的...

    全套百度云教程:python基础+进阶+项目篇 (含Django和Tornado)

    5. **模块与包**:如何使用Python内置模块和第三方库。 6. **异常处理**:理解并处理程序运行中的错误和异常。 #### 二、Python进阶 在掌握了Python基础知识之后,接下来将深入学习更高级的主题,为实际项目开发...

    Python的开发工具

    "人生苦短,我用Python"这句口号很好地概括了Python语言的精髓——高效、易读和节省时间。在Python的开发工具领域,有很多优秀的选择,帮助开发者提升工作效率,实现更加便捷的代码编写、调试和管理。 首先,我们来...

    python笔记

    ### Python面向对象编程基础 #### 类型定义与对象创建 Python是一种支持面向对象编程的语言,这意味着用户...通过这些知识点的学习和实践,可以建立起Python编程的基础框架,为进一步深入学习高级特性打下坚实的基础。

    ubuntu安装笔记——part1

    2. **Wubi安装**:这是一种通过Windows环境下的可执行文件来安装Ubuntu的方式,极大地降低了学习Linux的门槛。不过需要注意的是,使用Wubi安装时必须避免突然断电,否则可能导致系统损坏。 3. **虚拟机安装**:如果...

    ARCGIS学习笔记(纸老虎)

    ### ARCGIS学习笔记知识点概览 #### 1. ArcToolbox简介 - **核心功能**: ArcToolbox是ArcGIS中的一个重要组成部分,它提供了一系列工具,用于地理数据处理、空间分析、数据转换等功能。 - **工具分类**: - **3D...

    PyQT6/PySpider 开屏视频播放,然后加载HomeWindow

    在本项目中,开发者利用了PyQT6和PySpider库来构建一个应用程序,该程序在启动时会播放一段开屏视频,随后加载主界面——HomeWindow。以下是该项目涉及的几个关键知识点的详细说明: 1. **PyQT6**: PyQT6是Python与...

    《“笨办法”学Python》的读书笔记和编程习题.zip

    9. **模块和包**:Python有丰富的标准库和第三方库,学习如何导入和使用模块,如os、sys、math等,可以使你的代码更加高效和专业。 10. **面向对象编程**:Python支持面向对象编程,理解类和对象的概念,以及继承、...

    python学习笔记之列表(list)与元组(tuple)详解

    ### Python学习笔记之列表(List)与元组(Tuple)详解 #### 前言 本文旨在深入探讨Python中两种常用且极为重要的数据类型——列表(List)与元组(Tuple)。我们将从概念出发,逐步过渡到具体应用及两者之间的转换方式。 ...

    python进阶学习笔记-Numpy和SciPy

    Python的Numpy库是进行数值计算的核心工具,它为Python提供了高效的多维数组对象——ndarray,以及大量的数学函数来处理这些数组。Numpy的全称为Numerical Python,它的主要功能包括: 1. **N维数组对象ndarray**: ...

    Flask学习笔记(4).rar

    在本篇Flask学习笔记(4)中,我们将深入探讨Python的微框架——Flask,它以其轻量级、灵活性和强大的扩展性深受开发者喜爱。Flask是构建Web应用的理想选择,尤其适合初学者和小型项目。以下是笔记的主要内容: 1. ...

Global site tag (gtag.js) - Google Analytics