01Python基础_09异常
1. try & except
原程序:
1 import math 2 3 while True: 4 text = raw_input('> ') 5 if text[0] == 'q': 6 break 7 x = float(text) 8 y = math.log10(x) 9 print "log10({0}) = {1}".format(x, y)
View Code
这段代码接收命令行的输入,当输入为数字时,计算它的对数并输出,直到输入值为 q
为止。
但是当输入0或者负数时,会报错。
修改后的程序:
import mathwhile True:try:text = raw_input('> ')if text[0] == 'q':breakx = float(text)y = math.log10(x)print "log10({0}) = {1}".format(x, y)except ValueError:print "the value must be greater than 0"
View Code
一旦 try
块中的内容出现了异常,那么 try
块后面的内容会被忽略,Python会寻找 except
里面有没有对应的内容,如果找到,就执行对应的块,没有则抛出这个异常。
运行结果:
> -1 the value must be greater than 0 > 0 the value must be greater than 0 > 1 log10(1.0) = 0.0 > q
View Code
捕捉所有类型错误:
将except
的值改成 Exception
类,来捕获所有的异常。
import mathwhile True:try:text = raw_input('> ')if text[0] == 'q':breakx = float(text)y = 1 / math.log10(x)print "1 / log10({0}) = {1}".format(x, y)except Exception:print "invalid value"
View Code
运行结果:
> 1 invalid value > 0 invalid value > -1 invalid value > 2 1 / log10(2.0) = 3.32192809489 > q
View Code
进一步完善后的程序:
import mathwhile True:try:text = raw_input('> ')if text[0] == 'q':breakx = float(text)y = 1 / math.log10(x)print "1 / log10({0}) = {1}".format(x, y)except ValueError:print "the value must be greater than 0"except ZeroDivisionError:print "the value must not be 1"except Exception:print "unexpected error"
View Code
运行结果:
> 1 the value must not be 1 > -1 the value must be greater than 0 > 0 the value must be greater than 0 > q
View Code
2. finally
不管 try 块有没有异常, finally 块的内容总是会被执行,而且会在抛出异常前执行,因此可以用来作为安全保证,比如确保打开的文件被关闭。
try:print 1 / 0 finally:print 'finally was called.'
out: finally was called.
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-13-87ecdf8b9265> in <module>()1 try:
----> 2 print 1 / 03 finally:4 print 'finally was called.'ZeroDivisionError: integer division or modulo by zero
如果异常被捕获了,在最后执行:
try:print 1 / 0 except ZeroDivisionError:print 'divide by 0.' finally:print 'finally was called.'out: divide by 0.finally was called.
View Code
转载于:https://www.cnblogs.com/zhangyide/p/8206755.html
01Python基础_09异常相关推荐
- Java基础知识——异常Throwable和Exception
Java基础知识--异常Throwable和Exception Java设置了异常,旨在鼓励将方法中可能出现的异常告知给使用此方法的程序员(你和我!).当然了,这种方法是比较优雅的,让我们确切的知道是 ...
- 十九. Python基础(19)--异常
十九. Python基础(19)--异常 1 ● 捕获异常 if VS异常处理: if是预防异常出现, 异常处理是处理异常出现 异常处理一般格式: try: <...............&g ...
- 【CXY】JAVA基础 之 异常概述
概述: 1.异常给初学者的感觉(笔者当时就是这个感觉,不知道其他人是否有共鸣?) 1.异常是个什么东西?理解不了 2.很复杂 3.异常很"简陋",没什么用 4.我保证我写的程序正确 ...
- 【CXY】JAVA基础 之 异常
讲述: 1.五个关键字 1.try:尝试捕获异常,具体的下面讲述 2.catch:当try捕获到异常了,系统会自动生成一个异常信息,这个异常信息就给catch,形象的说我抓住了这个异常. 3.thro ...
- java 抛出异常的作用_Java 基础之异常抛出
Java 基础之异常抛出 Java,基础,异常抛出 在 Java 里,除了对异常的捕获外,你还可以抛出异常,还可以创造异常.抛出异常的作用就是告诉你的调用者,程序出现了不正常的情况了,得不要期望的结果 ...
- python14基础末异常文件
1.异常的简介 ----程序在运行过程中可能会出现一些错误.比如: 使用了不存在的索引,两个不 同类型的数据相加-这些错误我们称之为异常 ----处理异常 程序运行时出现异常,目的并不是让我们的程序直 ...
- Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制)
原文:Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制) 异常机制和File类 异常机制 基本概念 异常就是"不正常"的含义,在 Java 语言中主要指 ...
- 01Python基础阶段_Day07
01Python基础阶段_Day07 批量修改文件名后复制文件 重点注意: 翻车点: 当以二进制模式打开文件进行文件操作时. read 函数最终读取文件内容为空时,返回的结果为 b'' 表示是一个二进 ...
- JavaSE---IO流基础(异常、File类、递归)
6.IO流基础 6.1 异常 6.1.1 异常的概述 异常:就是程序在运行时出现不正常情况. 在Java中,将异常封装成了一个类:Throwable.Throwable下分为两大体系:Error和Ex ...
最新文章
- IDEA-Java自动生成单元测试
- Intelij IDEA注册码生成代码
- Windows和Virtualbox虚拟机之间拷贝文件
- 项目管理中工时计算的问题
- 《产品设计与开发(原书第5版)》——3.2 机会识别的评比结构
- DB2的ErrorCode
- python ssl模块安装_在Windows上安装Python的SSL模块(2.5.4)
- c语言中dot作用,编程小组功能介绍及使用说明
- 含论文答辩PPT任务书源码等基于SSM框架演唱会网上订票系统
- ERP软件厂商薪资情况披露
- 计算机中库的创建方法,win7系统下库的创建方法
- 【TSOJ课程】20 1151 玛雅日历
- android nmea 工具,android – 如何从nmea句子信息计算以米为单位的gps准确度
- 大数据分析引擎-Doris简要介绍
- JavaScript——问卷星自动填写
- OpenGLES(八)GPUImage滤镜链与将滤镜修改后的图片保存到相册
- i910980hk和r9 4900h哪个好
- c语言篮球24秒计时器编程,篮球24秒比赛计时器功能简介
- Win7 下U盘安装Ubuntu16.04 双系统详细图文教程
- Stop c000021a {Fatal System Error} The Session Manager Initialization System Process...