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`和`finally`关键字实现。下面将详细介绍这些概念以及如何使用它们。 首先,`try`块用于包含可能引发异常的代码。如果在`try`块中的代码抛出一个异常,Python会立即停止执行...
本文将详细介绍Python中使用try-except处理程序异常的三种常用方法,并结合实例深入分析了相关的操作技巧。 首先,我们需要了解Python异常处理的基本结构。基本的异常处理结构包括try、except、else和finally这几个...
python try except用法 在Python中,try-except语句用于捕获和处理异常。
以上这篇python try except 捕获所有异常的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python中异常捕获方法详解python traceback捕获并打印...
在 Python 中,try-except 机制是一种常用的异常处理方式,它允许开发者捕获并处理异常。基本语法结构如下: ``` try: # 可能引发异常的代码 except 异常类型 as e: # 异常处理代码 ``` 其中,try 块中的代码可能...
Python 的异常处理机制是通过 `try`-`except` 语句来实现的,它允许程序员优雅地处理程序运行过程中可能出现的错误,防止程序因为意外的异常而突然终止,提高程序的稳定性和用户体验。以下是对 `try`-`except` 用法...
### Python Try Except 异常捕获机制解析 #### 一、引言 在软件开发过程中,尤其是编写较为复杂的脚本或应用程序时,错误处理是非常重要的一个环节。良好的错误处理不仅能够提升程序的健壮性,还能提高用户体验。...
- 如果一个异常没有匹配到当前`except`子句,它将被传递给包含它的外部`try`语句,直到找到匹配的处理程序,或者最终由Python解释器处理。 通过使用`try/except`和相关构造,程序员可以创建更健壮的代码,防止程序...
翻译自StackOverflow中一个关于Python异常处理的问答。 问题:为什么“except:pass”是一个不好的编程习惯? 我时常在StackOverflow上看到有人评论关于except: pass的使用,他们都提到这是一个不好的Python编程习惯...
本文将详细介绍如何使用Python的try...except语句来捕获异常,并从异常对象中获取和返回错误信息字符串。通过具体的代码示例来演示这一过程,这将对学习者和从事Python开发的工程师有实际帮助。 首先,基本的异常...
异常发生在程序执行的过程中,如果python无法正常处理程序就会发生异常,导致整个程序终止执行,python中使用try/except语句可以捕获异常。 try/except 异常的种类有很多,在不确定可能发生的异常类型时可以使用...
`try-except`语句是Python中用于异常处理的基本构造,它使得我们可以将可能出错的代码段包围起来,确保即使发生错误,程序也能继续执行或者提供有意义的反馈。 `try`块包含可能会引发异常的代码,如果在这段代码中...
本篇文章将深入探讨Python中的异常处理机制以及`try-except`语句的工作原理。 异常是程序在执行过程中遇到的错误或异常情况,如除以零、文件未找到等。Python提供了强大的异常处理机制来捕获和处理这些错误,避免...
二、异常捕获 (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:...
except 语句块是 Python 异常处理机制的另一个核心部分,它用于捕获和处理异常。except 语句块可以指定要捕获的异常类型,并提供相应的处理代码。在 except 语句块中,可以使用 as 语句来获取异常对象,然后进行相应...