python的异常处理机制设计的比较传统,在日常的开发中,基本满足我的需要
下面就python的异常,几点小小的讨论
1. try...except
-
tommy@lab3:~$ python
-
Python 2.5
.
2
(r252:
60911
, Jan
4
2009
,
17
:
40
:
26
)
-
[GCC 4.3
.
2
] on linux2
-
Type "help"
,
"copyright"
,
"credits"
or
"license"
for
more information.
-
>>> 1
/
0
-
Traceback (most recent call last):
-
File "<stdin>"
, line
1
,
in
<module>
-
ZeroDivisionError: integer division or
modulo by zero
-
>>>
-
>>> try
:
-
... 1
/
0
-
... except
:
-
... print
"do something..."
-
...
-
do something...
-
>>>
2. try...finally
finally 里面只是执行完成try中的代码后,必须执行的代码,
即使是 try中有异常抛出,也是会去执行finally
-
>>>
try
:
-
... 1
/
0
-
... finally
:
-
... print
"I just finally do something ,eg: clear!"
-
...
-
I just finally
do something ,eg: clear!
-
Traceback (most recent call last):
-
File "<stdin>"
, line
2
,
in
<module>
-
ZeroDivisionError: integer division or
modulo by zero
-
>>>
所以,一般情况下,finally里面执行的都是一些清理工作,比如:关闭文件描述符,释放锁等
-
>>>
try
:
-
... fd=open("have-exists-file"
,
"r"
)
-
... print
"do some thing ,read file ,write file..."
-
... finally
:
-
... fd.close()
-
...
-
do some thing ,read file ,write file...
-
>>>
多线程中,对锁的使用
-
tommy@lab3:~$ python
-
Python 2.5
.
2
(r252:
60911
, Jan
4
2009
,
17
:
40
:
26
)
-
[GCC 4.3
.
2
] on linux2
-
Type "help"
,
"copyright"
,
"credits"
or
"license"
for
more information.
-
>>> import
threading
-
>>> l_lock=threading.RLock()
-
>>> try
:
-
... l_lock.acquire()
-
... print
"do some thing."
-
... finally
:
-
... l_lock.release()
-
...
-
True
-
do some thing.
-
>>>
注意,finally中,如果出现异常,外部如果没有相应的捕获机制,该异常会层层抛出,直到最顶端,然后解释器停止
一般我们会这样做
-
>>>
try
:
-
... try
:
-
... fd=open("no-exists-file"
,
"r"
)
-
... print
"do some thing ,read file ,write file..."
-
... finally
:
-
... fd.close()
-
...except
:
-
... print
"catch finally exception."
-
do some thing ,read file ,write file...
-
>>>
3. 封装了一个全局的捕获异常的函数(偶比较懒,就用了全部的捕获异常方法)
-
import
traceback
-
import
sys
-
def
trace_back():
-
try
:
-
return
traceback.print_exc()
-
except
:
-
return
''
具体使用
-
try
:
-
do_something()
-
except
:
-
print
trace_back()
写的比较散,主要是想说说,python异常的简单使用,已经封装的一个简单的获得异常发生时,全局保持的异常信息(可能不准确,但基本够用)
分享到:
相关推荐
主要介绍了Python使用try except处理程序异常的三种常用方法,结合实例形式分析了Python基于try except语句针对异常的捕获、查看、回溯等相关操作技巧,需要的朋友可以参考下
python try except用法 在Python中,try-except语句用于捕获和处理异常。
以上这篇python try except 捕获所有异常的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python中异常捕获方法详解python traceback捕获并打印...
翻译自StackOverflow中一个关于Python异常处理的问答。 问题:为什么“except:pass”是一个不好的编程习惯? 我时常在StackOverflow上看到有人评论关于except: pass的使用,他们都提到这是一个不好的Python编程习惯...
主要介绍了Python try except异常捕获机制原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
异常发生在程序执行的过程中,如果python无法正常处理程序就会发生异常,导致整个程序终止执行,python中使用try/except语句可以捕获异常。 try/except 异常的种类有很多,在不确定可能发生的异常类型时可以使用...
二、异常捕获 (Exception catching) 2.1 try-except 语句 2.1.1 基本用法 2.1.2 指定异常类型 2.1.3 小结 2.2 try-except-else 语句 2.3 try-except-else-finally 语句 2.4 小结 三、异常抛出 (Exception ...
python中的异常使用继承结构创建,可以在异常处理程序中捕获基类异常,也可以捕获各种子类异常,python中使用try…except语句捕获异常,异常子句定义在try子句后面。 Python中的异常处理 异常处理的语句结构 try:...
在有些情况下,利用try…except来捕捉异常可以起到代替if…else的作用。 比如在判断一个链表是否存在环的leetcode题目中,初始代码是这样的 # Definition for singly-linked list. # class ListNode(object): # def ...
python的异常处理,异常捕获,try:except:else:finally:
Python 中,用try except语句块捕获并处理异常,其基本语法结构如下所示: try: 可能产生异常的代码块 except [ (Error1, Error2, ... ) [as e] ]: 处理异常的代码块1 except [ (Error3, Error4, ...
本文实例讲述了Python 异常的捕获、异常的传递与主动抛出异常操作。分享给大家供大家参考,具体如下: 异常的捕获 demo.py(异常的捕获): try: # 提示用户输入一个整数 num = int(input("输入一个整数:")) #...
在Python中处理异常使用的是try-except代码块,try-except代码块放入让python执行的操作,同时告诉python程序如果发生了异常该怎么办,try-except这个功能其实很多入门书籍中都放到了高级篇幅里,在入门的时候一般...
在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!...在python的异常中,有一个万能异常:Exception,他可以捕获任意异常 s1 = 'hello' try: int(s1) excep
问题 ... try: int(x) except Exception as e... '''异常的父类,可以捕获所有的异常''' print(e) # e变量是Exception类型的实例,支持__str__()方法,可以直接打印。 invalid literal for int() with base 10: 'x' try:
要了解try except异常处理的用法,简单来说,当位于 try 块中的程序执行出现异常时,会将该种异常捕获,同时找到对应的 except 块处理该异常,那么这里就有一个问题,它是如何找到对应的 except 块的呢? 我们知道,...
在有些情况下,利用try…except来捕捉异常可以起到代替if…else的作用。 比如在判断一个链表是否存在环的leetcode题目中,初始代码是这样的 # Definition for singly-linked list. # class ListNode(object): # def...