Python的异常处理机制 -- (转)
当你的程序中出现异常情况时就需要异常处理。比如当你打开一个不存在的文件时。当你的程序中有一些无效的语句时,Python会提示你有错误存在。
下面是一个拼写错误的例子,print写成了Print。Python是大小写敏感的,因此Python将引发一个错误:
>>> Print 'Hello World'
File "", line 1
Print 'Hello World'
^
SyntaxError: invalid syntax >>> print 'Hello World'
Hello World
1、try...except语句
try...except语句可以用于捕捉并处理错误。通常的语句放在try块中,错误处理语句放在except块中。示例如下:
#!/usr/bin/python
# Filename: try_except.py import sys try:
s = raw_input('Enter something --> ')
except EOFError:#处理EOFError类型的异常
print '/nWhy did you do an EOF on me?'
sys.exit() # 退出程序
except:#处理其它的异常
print '/nSome error/exception occurred.' print 'Done'
运行输出如下:
$ python try_except.py
Enter something -->
Why did you do an EOF on me? $ python try_except.py
Enter something --> Python is exceptional!
Done
说明:每个try语句都必须有至少一个except语句。如果有一个异常程序没有处理,那么Python将调用默认的处理器处理,并终止程序且给出提示。
2、引发异常
你可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类。
下面是一个引发异常的例子:
#!/usr/bin/python
#文件名: raising.py class ShortInputException(Exception):
'''你定义的异常类。'''
def __init__(self, length, atleast):
Exception.__init__(self)
self.length = length
self.atleast = atleast try:
s = raw_input('请输入 --> ')
if len(s) < 3:
raise ShortInputException(len(s), 3)
# raise引发一个你定义的异常
except EOFError:
print '/n你输入了一个结束标记EOF'
except ShortInputException, x:#x这个变量被绑定到了错误的实例
print 'ShortInputException: 输入的长度是 %d, /
长度至少应是 %d' % (x.length, x.atleast)
else:
print '没有异常发生.'
运行输出如下:
$ python raising.py
请输入 -->
你输入了一个结束标记EOF $ python raising.py
请输入 --> --> ab
ShortInputException: 输入的长度是 2, 长度至少应是 3 $ python raising.py
请输入 --> abc
没有异常发生.
3、try...finally语句
当你正在读文件或还未关闭文件时发生了异常该怎么办呢?你应该使用try...finally语句以释放资源。示例如下:
#!/usr/bin/python
# Filename: finally.py import time try:
f = file('poem.txt')
while True: # 读文件的一般方法
line = f.readline()
if len(line) == 0:
break
time.sleep(2)#每隔两秒输出一行
print line,
finally:
f.close()
print 'Cleaning up...closed the file'
运行输出如下:
$ python finally.py
Programming is fun
When the work is done
Cleaning up...closed the file
Traceback (most recent call last):
File "finally.py", line 12, in ?
time.sleep(2)
KeyboardInterrupt
说明:我们在两秒这段时间内按下了Ctrl-c,这将产生一个KeyboardInterrupt异常,我们并没有处理这个异常,那么Python将调用默认的处理器,并终止程序,在程序终止之前,finally块中的语句将执行。
Python的异常处理机制 -- (转)的更多相关文章
- python的异常处理机制
异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...
- Python 之异常处理机制
python在程序运行出现错误时时有相应的反应机制 ,我们可以针对不同的错误做出不同的响应 list1 = ['a','b','c'] print(list1[4]) #>>>Ind ...
- [python]python try异常处理机制
#python的try语句有两种风格 #一:种是处理异常(try/except/else) #二:种是无论是否发生异常都将执行最后的代码(try/finally) try/except/else风格 ...
- python异常处理机制
python有五种异常处理机制,分别是 1.默认异常处理器. 如果我们没有对异常进行任何预防,那么程序在执行过程中发生异常就会中断程序,调用python默认的异常处理器,并在终端输出异常信息,如图所示 ...
- Python笔记(四):异常处理机制与 open()
(一) 异常处理机制概述 就像日常生活中会遇到各种意外情况一样(例如:你可能考虑过如果中了500w该怎么做),代码运行过程中也会遇到这种意外情况,python提供了这么一种机制,处理意外情况(就像如 ...
- python正确使用异常处理机制
一.不要过度使用异常 不可否认,Python 的异常机制确实方便,但滥用异常机制也会带来一些负面影响.过度使用异常主要表现在两个方面: 把异常和普通错误混淆在一起,不再编写任何错误处理代码,而是以简单 ...
- python基础-异常处理
一.错误和异常 程序中难免出现错误,而错误分成两种 1.1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def te ...
- python的异常处理
在所有的程序中,都会遇到异常,有些异常是代码编写的时候产生的,在前期过程中可能会直接导致程序无法运行.这一类的异常,在编写代码的时候,程序可以直接排查修改.但有些异常,是在程序运行过程中产生的,可能是 ...
- python的反射机制
转载自:http://www.cnblogs.com/feixuelove1009/p/5576206.html 对编程语言比较熟悉的朋友,应该知道"反射"这个机制.Python作 ...
随机推荐
- MenuStrip的自动显示
/// <summary> /// 主界面接受F11时,显示菜单 /// 通过改写Form的ProcessCmdKey实现 /// </summary> /// <par ...
- 网络控制API 路由表 arp表 包括tcp的这些参数都是从哪里设置
路由表查看 arp缓存 都是走的什么接口?
- jsp文件过大,is exceeding 65535 bytes limit
今天修改配置项的时候,遇到了一个异常,Generated servlet error:The code of method _jspService(HttpServletRequest, HttpSe ...
- BZOJ4300 绝世好题(动态规划)
设f[i][j]为前i个数中所选择的最后一个数在第j位上为1时的最长序列长度,转移显然. #include<iostream> #include<cstdio> #includ ...
- 【题解】CF#1012 C-Hill
感觉这题的状态还是比较明显的.设置状态 \(f[i][j][0/1]\) 表示dp到第 \(i\) 个位置,前面(包括这里)已经出现了 \(j\) 个山峰,当前位置是不是山峰即可 dp.这样的状态有一 ...
- Android关于注解那点事(二)
前言 上篇主要讲解了注解的基本操作,以及一个运行时注解的小例子,今天我们主要来说道说道注解中另一种实现方式,编译时注解(CLASS),不同于上篇例子的运行时注解(RUNTIME),需要在代码运行时,反 ...
- 【BZOJ5297】【CQOI2018】社交网络(矩阵树定理)
[BZOJ5297][CQOI2018]社交网络(矩阵树定理) 题面 BZOJ 洛谷 Description 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分.通常,一个用户在社交网络上发 ...
- POJ 3621 Sightseeing Cows | 01分数规划
题目: http://poj.org/problem?id=3621 题解: 二分答案,检查有没有负环 #include<cstdio> #include<algorithm> ...
- 常见的shell命令总结
1.查看一个程序是否运行 ps –ef|grep tomcat 查看所有有关tomcat的进程 2.终止线程 kill -9 2222 3.查看文件,包含隐藏文件 ls -al 4.当前 ...
- The Shortest Path in Nya Graph HDU - 4725
Problem Description This is a very easy problem, your task is just calculate el camino mas corto en ...