python之错误和异常

原创 2017年01月04日 00:09:31

错误和异常

1 错误
从软件层面上来说,错误分为语法错误和逻辑错误,语法错误指示软件的结构上有错误, 导致不能被解释器解释或编译器无法编译. 这些错误必须在程 序执行前纠正。 逻辑错误可能是由于不完整或是不合法的输入 所致; 在其他情况下, 还可能是逻辑无法生成, 计算, 或是输出结果需要的过程无法执行。
2 异常
对异常的好描述是: 它是因为程序出现了错误而在正常控制流以外采取的行为. 这个行为又 分为两个阶段: 首先是引起异常发生的错误, 然后是检测(和采取可能的措施)阶段。
3 Python 中的异常
python中的异常也是一个类,所有的异常都继承自baseexception。每个异常都由三部分组成:traceback,错误名称,错误原因。
4 python中检测和处理异常的机制是try-except语句
如下:

try:     
    try_suite    # watch for exceptions here 监控这里的异常 
except Exception[, reason]:     
    except_suite    # exception-handling code  异常处理代码

5 带有多个except的try语句

try:     
    try_suite    
except Exception[, reason]:     
    except_suite    
except Exception1[, reason1]:     
    suite_for_exception_Exception1 
except Exception2[, reason2]:     
    suite_for_exception_Exception2 

6 在python中还可以处理多个异常的except语句, except 语句在处理多个异常时要求异常被放 在一个元组里

except (Exc1[, Exc2[, ... ExcN]])[, reason]:
    suite_for_exceptions_Exc1_to_ExcN 

7 捕获所有异常
在python中大多数类都继承自exception,所以可以用这个异常捕捉大多数异常:

try:     
    try_suite
except Exception as e:    
    except_suite

8 else子句
在 try 范围中没有异常被检测到时,执行 else 子 句

try:     
    3rd_party_module.function() 
except:     
    log.write("*** caught exception in module\n") 
else:     
    log.write("*** no exceptions caught\n")

9 finally子句
finally 子句是无论异常是否发生,是否捕捉都会执行的一段代码。
下面是 try-except-else-finally 语法的示例:

try:     
    A 
except MyException: B 
else: C 
finally: D 

10 try-except-else-finally:语句

try:     
    try_suite 
except Exception1:     
    suite_for_Exception1 
except (Exception2, Exception3, Exception4):
    suite_for_Exceptions_2_3_and_4 
except Exception5 as Argument5:     
    suite_for_Exception5_plus_argument 
else:     
    no_exceptions_detected_suite
finally:     
    always_execute_suite 

11 触发异常
到目前为止,我们所见到的异常都是由解释器引发的.由于执行期间的错误而引发.程序员在编 写 API 时也希望在遇到错误的输入时触发异常,为此,Python 提供了一种机制让程序员明确的触发异 常:这就是 raise 语句。

raise [SomeException [, args [, traceback]]] 

第一个参数,SomeExcpetion,是触发异常的名字。
第二个符号为可选的 args(比如参数,值),来传给异常。
12 断言
断言是一句必须等价于布尔真的判定。
断言语句等价于这样的 Python 表达式,如果断言成功不采取任何措施(类似语句),否则触发 AssertionError(断言错误)的异常.assert 的语法如下:

assert expression[, arguments] 

下面是我们如何用 try-except 语句捕获 AssertionError 异常:

try:     
    assert 1 == 0, 'One does not equal zero silly!' 
except AssertionError as args:     
    print '%s: %s' % (args.__class__.__name__, args) 

13 创建异常
尽管标准异常集包含的内容已经相当广泛,你还是可以创建自己的异常.一种情况是你想在特定 的标准异常和模块异常中添加额外的信息。
14 为什么用异常
在应用层处理错误的能力近来变得更为重要, 用户已不再是应用程序的的唯一的直接运行者,程序再也不能只是直接的失败或崩溃,如果这样,就会导致无法挽回的损失。
15 异常和sys模块
另一种获取异常信息的途径是通过 sys 模块中 exc_info()函数. 此功能提供了一个 3 元组 (3-tuple)的信息, 多于我们单纯用异常参数所能获得. 让我们看看如何用 sys.exc_info() :

try: ...     
    float('abc123') ... 
except: ...     
    import sys ...     
    exc_tuple = sys.exc_info() 

我们从 sys.exc_info()得到的元组中是:

  • exc_type: 异常类
  • exc_value: 异常类的实例
  • exc_traceback: 追踪(traceback)对象
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Python文件与异常--处理错误

Python文件与异常–处理错误 代码块head frist python 第三章学习代码:# -*- coding: utf-8 -*- """ Created on Mon Mar 27 16:2...

python 错误与异常

python 错误与异常错误 语法错误 不符合解释器和编译器 逻辑错误 异常 程序遇到逻辑或者算法问题 运行过程中计算机错误(内存不够或者IO错误) 区别错误在执行前修改,逻辑错误无法修改运行时...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Python2.7.x 错误和异常

错误: 1、语法错误:代码不符合解释器或者编译器语法 2、逻辑错误:不完整、不合法输入、计算出现问题 异常:执行过程中出现问题导致程序无法执行 1、程序遇到逻辑或者算法问题 2、运行过程中计算机错误...

python的常见错误和异常

1 错误和异常的概念 错误:1)语法错误。代码不符合解释器或编译器语法,在执行前可以修改    2)逻辑错误。不完整或不合法输入(传递参数不合法等)或者计算出现问题(比如出现除0操作)。 异常:...

<PY><core python programming笔记>C10 错误和异常

 C10 错误和异常 10.1 异常处理 try ----catching 原因:程序可能被中止,错误可能向上层传播 目的:使程序继续运行,避免错误传播,把错误转化为“非错误” 一旦程...

解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误

今天准备将某SQLite数据库的内容导出到文本文档(*.txt)中,设计的Python程序如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1...

转:python学习(异常和错误)(BeginMan)

声明:转自BeginMan 原帖地址:http://www.cnblogs.com/BeginMan/p/3171445.html一、什么是错误,什么是异常,它们两者区别这里解释如下:个人觉得很通俗...

python 错误异常处理

通常异常处理分为三大类 语法错误 语意错误 逻辑错误 语法错误 语法错误一般都是少写了些标点符号 只要console看到SyntaxError 几乎都是语法错误 语义错误 ...

python错误和异常

1. 错误: 从软件方面来说,错误是语法或是逻辑上的。语法错误

Python_Scrapy_6.错误与异常

看了一下官方教程的第二部分,发现用了异常处理机制.因为我的学习计划是围绕着项目进行了,天赋点不够用了就去打打挂提升下等级. 0.编程时会出现的错误和异常 0.代码本身的错误,也就是bug.比如 字...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)