作者:jofranks 原创作品,转载请标明出处!版权所有,侵权必究!
来源:http://blog.csdn.net/jofranks
异常、错误是在写程序是必不可免的,只要是人就会犯错误。一旦错误出现,我们的程序就会停止执行,你必须将程序修改过才可以正常运行。
异常是因为程序出现错误而在正常控制流以外采取的行为。 采取的这个行为是什么呢? 它分为两方面,分别是:【1】引起异常发生的错误。只要检测到错误并且意识到异常条件,解释器就会引发(触发/抛出/生成)一个异常。当然,我们也可以自己来引发一个异常。 总的来说,异常就是错误发生的信号。
【2】检测。
异常和错误不光是在python中存在,在像C、C++、Objective-c、java等语言中都是存在的。他们都是相似的。
python中采用“尝试(try)”块和“捕获(catching)”块的概念,在异常处理方面更有"纪律性";
OK,下面我们就来看看python中的异常。
1:NameError:尝试访问一个未申明的变量
2:ZeroDivisionError:除数为0
3:SyntaxError:Python解释器语法错误 此异常是唯一一个不是在运行时发生的异常。
4:IndexError:请求的错音超出序列范围
5:KeyError:请求一个不存在的字典关键字
6:IOError:输入/输出错误
7:AttributeError:尝试访问未知的对象属性
首先先来看一下 try语句: try-except、try-finally。
这两种语句你只能用其中的一种,一个try只能对应一个或者多个except子句,但只能对应一个finally子句,或是一个 try-except-finally复合语句。
1、try-except
- try:
- 监控这里的异常
- except Exception[, reason]:
- 异常处理代码
我们也可以来看一个例子:
- try:
- a = 1 / 0
- except ZeroDivisionError, e:
- print 'error:', e
它在执行的时候,如果try块中的代码没有任何错误,那么他就会忽略except中的部分。而发生异常就会执行except中的部分。在try块中,如果发现异常,从异常点开始往后的代码将不会执行。此后解释器将开始寻找处理器,找到了就执行,没有找到就会将异常移交给上一层去处理,如果上一层也没找到那么就会继续上交,知道找到合适的处理器。如果最终没有找到,那么异常就是未处理!
OK,下面我们来看一下一个try块跟随多个except的形式。
- try:
- 监控这里的异常
- except Exception1[, reason]:
- 异常处理代码
- except Exception2[, reason]:
- 异常处理代码
- ......
其执行也是相同的,发生异常,解释器将在这一串处理器中寻找匹配异常!
我们也可以这样来写:
- try:
- 。。。。
- except (Exception1, Exception2)[, reason]:
- ....
其实except可以处理任意过个异常,但是这有个条件就是:他们要被放在一个元组里:except (E1[, E2[, E3]])[, reason]
值得说的是,在python中不提倡空except子句,如果你想捕获所有的异常,那么我们就要使用python中异常的一个类,就是BaseException。
except BaseException, e:
好了,找到异常好说,如果我们在try范围内没有异常被检测到呢? 大家都知道if--else 语句, 在这里也是,他找不到我们也给他一个else子句,让他去执行。
在这里,我们的else子句中的代码执行之前,我们的try范围内的代码必须完全成功。
2、try-finally语句
finally子句是无论异常发生还是不发生,捕获还是不捕获都会执行的代码段。
先来看看try-finally 和 try-except 的区别,他们的区别就是用来捕获异常的。 无论try中是否有异常触发,finally代码段都会被执行。
- try:
- A
- except e:
- B
- else:
- C
- finally:
- D
我们来看看他的执行: 当try范围中的代码产生一个异常的时候会立即跳到finally子句中,当finally子句中的代码执行完毕后又会继续try中的代码执行。
最后要注意的是: finally中的代码引发了另一个异常或由于return、break、continue语法而终止,原来的异常将丢失而且无法重新引发。
我们现在学到的异常是由解释器引发的,但是我们还可以自己触发异常,这就是raise语句了:
断言:
- raise [someException [, args [ , traceback]]]
someException 是触发异常的名字,他须是一个字符串,类或实例。args是可选的,他可以使一个单独的对象,也可以是一个对象的元组。
traceback他也是可选的,当异常触发时新生成的一个用于异常-正常化的跟踪记录对象。 如果你想要重新引发一个异常,这个参数是很有用的。
他是一句必须等价于布尔真的判定。
当异常发生的时候,意味着表达式为假。
断言是通过assert语句实现的,你可以简简单单的想像为 raise-if语句。
- assert expression[ , arguments]
如果断言成功了,那好说啥都不干。如果失败那么就要出发AssertionError异常了。如:
- assert 1 == 1
- assert 2 + 2 == 2 * 2
- assert range(3) == [0, 1, 2]
我们可以用try-except来捕获异常,也可以提供一个异常参数给assert
- try:
- assert q == 0, 'one does not equal zero silly!'
- except AssertionError, args:
- print '%s: %s' % (args.__class__.__name__, args)
输出是: AssertionError:one does not equal zero silly!
最后来讨论一下我们为什么要用异常:
现 今,随着科技和社会的发展,互联网的发展,软件也不止是针对GUI的用户了,web服务器也将成为应用软件的主要客户了,对于服务器来说,应用程序不能只 是直接的失败或崩溃,如果是这样,那么将导致用户浏览网页返回错误,我相信这是每一个互联网公司或是个人站长不愿意见到的,也是用户不愿意见到的。
还有就是就程序员来说,当创建一个应用程序的时候,你用了很多的资源,但是用户敲击键盘中断,应用程序不会去执行清理的工作,可能导致数据的丢失等一些列的问题。 还有就是当写代码的时候,函数必须去重写来为错误的庆幸返回一个“特殊”的值。
异常可以简化我们的代码,也可以检错整个错误管理的体系。
相关推荐
在Python编码中避免不了有错误或者异常的出现,这时候有一个全面的错误异常思维导图是再好不过了,这里分享一个关于Python编码中比较常见的错误异常思维导图供大家参考。
在Python编程语言中,错误和异常处理是编程实践中不可或缺的一部分。错误分为两类:语法错误(SyntaxError)和异常。语法错误通常在代码编译阶段就会被检测到,因为它们违反了Python的语法规则。而异常则是在程序...
1. **异常类型**:Python中有多种预定义的异常类,如`ValueError`、`TypeError`、`IOError`等,每种异常对应一种错误情况。 2. **try/except**:这是Python中的异常处理结构,`try`块包含可能引发异常的代码,`...
Python 异常和错误实践手册 Python 异常和错误实践手册是 Python 开发语言后端中非常重要的一部分。在实际工作中,我们遇到的情况不可能是非常完美的。例如用户输入不一定符合我们的要求,文件可能不存在或者文件...
了解python的错误与异常
- **理解业务背景**:异常检测的结果需结合业务背景解读,有些异常可能是有意义的事件,而非错误或问题。 通过Python和LOF算法的结合,我们可以构建一个自动化且高效的异常检测系统,有效地识别数据中的异常行为,...
本手册不会尝试涵盖Python的全部知识和每个特性,甚至不会涵盖所有常用的特性...8.Python错误与异常 9.Python类 10.Python标准库概览 11.Python标准库概览第二部分 12.现在做什么呢 13.Python交互的输入编辑和历史记录
Python提供了丰富的异常类型,这些异常被组织成一个层次结构,使得处理和捕获特定类型的错误更加方便。以下是对标题和描述中提到的“Python:通用异常类型表”的详细说明: 1. **BaseException**:所有异常的基类。...
本脑图是从解决python错误及异常出发,这里的脑图给你提供一个解决问题的思考方法,从最基本的错误、异常到如何调试,再到如何解决,及预测可能发生的异常和如何进行捕获,本文是实实在在的干货,希望能够帮助你,...
异常检测的目标是找出与其他数据点显著不同的观测值,这些值可能表示系统中的错误、欺诈行为或其他值得关注的事件。异常检测可以分为无监督和监督学习两类。无监督学习通常适用于没有标签的数据集,而监督学习则需要...
Python中的异常处理是编程实践中非常重要的一个概念,它允许开发者优雅地处理程序运行时可能出现的错误,确保程序的稳定性和用户体验。本节将详细介绍Python中的错误和异常,以及如何利用异常处理机制进行程序的错误...
在 Python 中,错误和异常是程序运行过程中可能遇到的问题,这些问题会导致程序正常执行流程被中断。为了有效处理这些问题,Python 提供了异常处理机制。 1. **基本异常处理结构**: - **`try...except` 语句**: ...
Python提供了一套完整的异常处理机制,使得开发者可以捕获并处理程序运行时出现的错误。本文将详细介绍Python中的异常处理机制,包括异常的捕获、处理和抛出。 异常处理是编程中一个重要的概念,它允许程序在发生...
处理Python错误和异常的方式主要有两种: - **异常捕获**(Try-Except): 使用try-except语句可以捕获并处理特定的异常。例如: ```python try: 1 / 0 except ZeroDivisionError: print("除数不能为零") ``...
### Python异常处理与调试 #### 一、Python异常基础 ##### 1.1 异常的概念 在Python编程中,**异常**是一种用于处理程序运行时错误的机制。当程序遇到无法处理的情况时(例如除数为零、文件不存在、网络连接失败...
5. Python错误与异常: - Python可以处理缩进错误,但不会因此正常启动,所以D选项正确。 6. Python内存管理: - 变量无需预先声明(A选项)。 - 变量不需要指定类型(C选项)。 - 可以使用`del`释放资源(D选项),...
在Python编程中,异常处理是一种重要的错误处理机制,它允许程序在遇到错误时优雅地处理,而不是直接崩溃。Python提供了一个内置的异常层次结构,但开发者也可以定义自己的异常类,以满足特定的错误处理需求。本文将...
Python中的错误和异常处理是编程过程中非常重要的一个环节,它能帮助我们编写更健壮、容错性更强的代码。本文将对Python的错误和异常进行小结,以供参考。 1. Python 异常类 Python是面向对象的语言,异常也是通过...
在Python编程中,异常处理是不可或缺的一部分,它帮助我们捕获和处理程序运行时可能出现的错误。当程序遇到无法正常执行的代码时,Python会抛出一个异常。正确地处理这些异常可以确保程序的健壮性,防止因未预期的...
问答互动引出学习目标 讲授法 示范练习 随堂报告 Python-异常处理-教学设计全文共6页,当前为第1页。Python-异常处理-教学设计全文共6页,...异常是程序因为输入错误或者其他IO操作不当出现的运行时错误的一种处理方