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异常相关推荐

  1. Java基础知识——异常Throwable和Exception

    Java基础知识--异常Throwable和Exception Java设置了异常,旨在鼓励将方法中可能出现的异常告知给使用此方法的程序员(你和我!).当然了,这种方法是比较优雅的,让我们确切的知道是 ...

  2. 十九. Python基础(19)--异常

    十九. Python基础(19)--异常 1 ● 捕获异常 if VS异常处理: if是预防异常出现, 异常处理是处理异常出现 异常处理一般格式: try: <...............&g ...

  3. 【CXY】JAVA基础 之 异常概述

    概述: 1.异常给初学者的感觉(笔者当时就是这个感觉,不知道其他人是否有共鸣?) 1.异常是个什么东西?理解不了 2.很复杂 3.异常很"简陋",没什么用 4.我保证我写的程序正确 ...

  4. 【CXY】JAVA基础 之 异常

    讲述: 1.五个关键字 1.try:尝试捕获异常,具体的下面讲述 2.catch:当try捕获到异常了,系统会自动生成一个异常信息,这个异常信息就给catch,形象的说我抓住了这个异常. 3.thro ...

  5. java 抛出异常的作用_Java 基础之异常抛出

    Java 基础之异常抛出 Java,基础,异常抛出 在 Java 里,除了对异常的捕获外,你还可以抛出异常,还可以创造异常.抛出异常的作用就是告诉你的调用者,程序出现了不正常的情况了,得不要期望的结果 ...

  6. python14基础末异常文件

    1.异常的简介 ----程序在运行过程中可能会出现一些错误.比如: 使用了不存在的索引,两个不 同类型的数据相加-这些错误我们称之为异常 ----处理异常 程序运行时出现异常,目的并不是让我们的程序直 ...

  7. Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制)

    原文:Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制) 异常机制和File类 异常机制 基本概念 异常就是"不正常"的含义,在 Java 语言中主要指 ...

  8. 01Python基础阶段_Day07

    01Python基础阶段_Day07 批量修改文件名后复制文件 重点注意: 翻车点: 当以二进制模式打开文件进行文件操作时. read 函数最终读取文件内容为空时,返回的结果为 b'' 表示是一个二进 ...

  9. JavaSE---IO流基础(异常、File类、递归)

    6.IO流基础 6.1 异常 6.1.1 异常的概述 异常:就是程序在运行时出现不正常情况. 在Java中,将异常封装成了一个类:Throwable.Throwable下分为两大体系:Error和Ex ...

最新文章

  1. IDEA-Java自动生成单元测试
  2. Intelij IDEA注册码生成代码
  3. Windows和Virtualbox虚拟机之间拷贝文件
  4. 项目管理中工时计算的问题
  5. 《产品设计与开发(原书第5版)》——3.2 机会识别的评比结构
  6. DB2的ErrorCode
  7. python ssl模块安装_在Windows上安装Python的SSL模块(2.5.4)
  8. c语言中dot作用,编程小组功能介绍及使用说明
  9. 含论文答辩PPT任务书源码等基于SSM框架演唱会网上订票系统
  10. ERP软件厂商薪资情况披露
  11. 计算机中库的创建方法,win7系统下库的创建方法
  12. 【TSOJ课程】20 1151 玛雅日历
  13. android nmea 工具,android – 如何从nmea句子信息计算以米为单位的gps准确度
  14. 大数据分析引擎-Doris简要介绍
  15. JavaScript——问卷星自动填写
  16. OpenGLES(八)GPUImage滤镜链与将滤镜修改后的图片保存到相册
  17. i910980hk和r9 4900h哪个好
  18. c语言篮球24秒计时器编程,篮球24秒比赛计时器功能简介
  19. Win7 下U盘安装Ubuntu16.04 双系统详细图文教程
  20. Stop c000021a {Fatal System Error} The Session Manager Initialization System Process...

热门文章

  1. Android Toast自己定义Toast例子
  2. 条件注释判断浏览器版本!--[if lt IE 9]
  3. ListView详解(二)
  4. composer的基本运用
  5. 【python】命令行解析工具getopt用法
  6. viewflipper动画切换屏幕
  7. 第二章:深入C#数据类型
  8. 实例教程一:电话拨号器
  9. 单机结构 集群结构 分布式结构
  10. 阿里6年32岁程序员:辞职在中小厂干了快两年,我怎么没有职场危机(年龄)?