`
wx1568016009
  • 浏览: 22787 次
文章分类
社区版块
存档分类
最新评论

Python基础之异常处理

 
阅读更多

640?wx_fmt=gif

Hello,今天天小编和大家带来的是python的异常处理。

在python里我们难免会有容易发生异常的代码块,那么遇到这些代码块我们该怎么处理呢?

640?wx_fmt=jpeg

首先,异常是什么?

异常是程序执行过程中出现问题导致程序无法执行。

一般情况下,在Python无法正常处理程序时就会发生一个异常。

异常是Python对象,表示一个错误。

当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。


分类

异常的分类一共分两种,第一种是程序在逻辑上的错误或算法上的错误,第二种是运行过程中计算机的失误,例如oi,内存发生异常。


那遇到这些异常我们一般需要做什么呢?


首先第一件要做的事情就是保持镇定,不要惊慌!!!!

其次就是静下心来看报的异常是什么,如果能看懂是什么异常就自己去解决异常,如果看不懂就去百度这个异常,查找解决方法。


那一般的,对于异常它是怎么产生的呢?

异常之所以能够产生则是因为解释器读取指令的时候发现有问题,不能继续执行下去了,它便会抛出一个异常。

那对于异常系统的解释器又如何去处理呢?

如果使用了try-except块就能去处理异常,采用raise来甩出一个异常,当然对于一些其他的异常系统也会去选择忽略有或者是终止当前程序去处理异常。


那这边我们就来看一个简单的异常:

640?wx_fmt=png

这是一行简单的异常,我们来看看程序报什么错:

640?wx_fmt=png

异常说:hello这个变量没有被定义

那如何解决这个异常呢???

答案就是定义这个hello,把它变成一个标识符或者字符串都可以解决报错,在python里面变量不能被直接声明,都需要通过间接赋值来声明变量的。所以如果想把hello变成标识符就只能对他进行赋值例如:hello=“helloworld”,如果需要将它变成字符串就可以直接用引号引起来“hello”即可。



那下面我们来看看都有什么异常吧!


AttributeError 

试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x

640?wx_fmt=png

640?wx_fmt=png

IOError(FileNotFounderror)

输入/输出异常;基本上是无法打开文件

640?wx_fmt=png

640?wx_fmt=png

ImportError 

无法引入模块或包;基本上是路径问题或名称错误

640?wx_fmt=png

640?wx_fmt=png

IndentationError 

语法错误(的子类) ;代码没有正确对齐

640?wx_fmt=png

640?wx_fmt=png

IndexError 

下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]

640?wx_fmt=png

640?wx_fmt=png

KeyError 

试图访问字典里不存在的键

640?wx_fmt=png

640?wx_fmt=png

KeyboardInterrupt 

Ctrl+C被按下


NameError

尝试访问一个没有申明的变量

(第一个hello的例子就是NameError)
SyntaxError 

表示语法错误,一般是代码出现错误才会报SyntaxError错误

640?wx_fmt=png

TypeError 

传入对象类型与要求的不符合

640?wx_fmt=png

640?wx_fmt=png

UnboundLocalError 

试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它

UnboundLocalError: local variable 'l' referenced before assignment

  1. 内部函数,不修改全局变量可以访问全局变量

  2. 内部函数,修改同名全局变量,则python会认为它是一个局部变量

  3. 在内部函数修改同名全局变量之前调用变量名称(如print sum),则引发Unbound-LocalError

正常:

640?wx_fmt=png

640?wx_fmt=png

报错:


640?wx_fmt=png

640?wx_fmt=png

等等........


异常处理的定义

python解释器检测到错误,触发异常(也允许程序员自己触发异常)

程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)

如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理。


异常处理的意义

python解析器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性 。




那么下面重点来了,如何处理异常?

捕捉异常可以使用try/except语句。

try/except语句用来检测try语句块中的错误,

从而让except语句捕获异常信息并处理。

如果不想在异常发生时结束你的程序,在try里捕获它即可。

try-except代码块:

640?wx_fmt=png

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。

如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。

如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。


如果你不会,只想简单的捕获可能发生的异常,你可以:

(不需要加任何参数)

try:
    正常的操作
   .....................
except:    发生异常,执行这块代码   .....................
else:    如果没有异常执行这块代码

那如果需要带参数呢?

你可以通过except语句来捕获异常的参数,如下所示:

try:
    正常的操作
   ......................
except ExceptionType, Argument:    你可以在这输出 Argument 的值...


除了以上的异常捕获之外,我们还可以强行甩出一个异常:

关键字raise

raise语法格式如下:

raise [Exception [, args [, traceback]]]

例如:

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行



那最后我们还可以自定义异常!


通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。

在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。

class Networkerror(RuntimeError):
    def __init__(self, arg):
        self.args = arg

在你定义以上类后,你可以触发该异常,如下所示:

try:
    raise Networkerror("Bad hostname")except Networkerror,e:
    print e.args


今天就到这里吧!

640?wx_fmt=jpeg


分享到:
评论

相关推荐

    Python语言基础:异常处理.pptx

    在编程领域,异常处理是确保程序健壮性的重要机制,特别是在Python这种动态类型的编程语言中。异常处理允许我们在代码执行过程中捕获并处理错误,防止程序因未预期的状况而崩溃。以下是关于Python语言中异常处理的...

    掌握Python中的异常处理:最佳实践与深入解析

    本文详细介绍了Python中异常处理的各个方面,包括基础概念、异常类型、异常的抛出与捕获、日志记录、最佳实践以及与单元测试的结合。通过实际的代码示例,读者可以更好地理解如何在Python中有效地使用异常处理来提高...

    Python:Python异常处理与调试

    ### Python异常处理与调试 #### 一、Python异常基础 ##### 1.1 异常的概念 在Python编程中,**异常**是一种用于处理程序运行时错误的机制。当程序遇到无法处理的情况时(例如除数为零、文件不存在、网络连接失败...

    Python基础入门教程 Python语言编程导论 Python应用案例1 (共12页).ppt

    【Python基础入门教程 Python语言编程导论】...Python基础入门教程 Python语言编程导论09 第九章 异常处理与程序调试 (共56页).ppt Python基础入门教程 Python语言编程导论10 第十章 python的GUI编程 (共107页).ppt

    Python基础教程 第三版

    **Python基础教程第三版概述** Python是一种高级编程语言,以其简洁、易读的语法和强大的功能而闻名。作为初学者入门编程或者专业人士增强技能的工具,Python基础教程第三版是学习这一语言的理想资源。该高清版教程...

    python基础教程第二版

    《Python基础教程第二版》是针对初学者的一本经典教材,尤其适合那些对Python 2.0版本感兴趣的读者。本书全面、深入地介绍了Python编程语言的基础概念和语法,旨在帮助读者掌握这一强大而灵活的编程工具。以下是根据...

    Python语言基础:异常.pptx

    当发生异常时,Python会创建一个异常对象并将其传递给异常处理结构,通常是`try/except`块。 下面是一些Python中常见的内置异常类及其用途: 1. `AttributeError`: 当尝试访问或修改对象的一个不存在的属性时,会...

    python基础教程配套源码

    "Python基础教程配套源码"是一份旨在帮助初学者深入理解Python编程原理和实践的资源。这个压缩包可能包含了与Python基础教程相关的各种示例代码、练习和项目,帮助学习者通过实际操作来巩固理论知识。 在Python的...

    python基础教程第二版答案-Python基础教程(第2版).pdf

    《Python基础教程(第2版)》是一本全面介绍Python编程的指南,适合初学者入门。Python作为一种解释型、面向对象、动态数据类型的高级程序设计语言,因其简洁的语法和强大的功能而广受欢迎。该书分为基础篇和高级篇...

    python 基础教程第三版

    总的来说,《Python基础教程(第3版)》涵盖了Python语言的各个方面,包括但不限于基本语法、数据结构、函数、面向对象编程、异常处理、标准库使用以及测试和调试。无论你是初入编程的新手还是寻求深化Python知识的...

    Python基础语法 Python数据类型与结构 Python函数与模块 面向对象编程在Python中的应用 Python异常处

    Python基础语法 Python数据类型与结构 Python函数与模块 面向对象编程在Python中的应用 Python异常处理与调试 Python文件操作与系统编程 Python网络编程基础 Python高级特性:装饰器与迭代器 Python数据库操作:...

    Python基础入门教程 Python语言编程导论09 第九章 异常处理与程序调试 (共56页).ppt

    【Python基础入门教程 Python语言编程导论】...Python基础入门教程 Python语言编程导论09 第九章 异常处理与程序调试 (共56页).ppt Python基础入门教程 Python语言编程导论10 第十章 python的GUI编程 (共107页).ppt

    Python基础入门教程 Python语言编程导论10 第十章 python的GUI编程 (共107页).ppt

    【Python基础入门教程 Python语言编程导论】...Python基础入门教程 Python语言编程导论09 第九章 异常处理与程序调试 (共56页).ppt Python基础入门教程 Python语言编程导论10 第十章 python的GUI编程 (共107页).ppt

    python 实验九 文件与异常

    在Python编程语言中,文件操作和异常处理是两个至关重要的概念。它们对于任何软件开发者来说都是基础且实用的技能。本实验将引导你深入理解如何在Python中进行文件的读写操作,以及如何有效地处理程序运行时可能出现...

    python课时安排-《Python基础》课程标准-64课时.pdf

    - **文件操作和异常处理**:教授读写文件、错误处理和异常捕获。 - **数据结构**:介绍列表、元组、字典和集合,以及如何使用它们来存储和处理数据。 - **函数式编程**:包括函数的高级用法,如高阶函数、闭包和装饰...

    python基础教程英文版

    《Python基础教程英文版》是学习Python编程语言的权威指南,特别是这个第三版,对应的是《Beginning Python 3》。本书全面覆盖了Python 3的关键概念和技术,旨在为初学者提供一个坚实的Python编程基础。 首先,...

    python基础教程源代码-python基础教程第三版源代码.pdf

    《Python基础教程》第三版源代码是一份详细的学习资源,涵盖了Python编程的多个核心概念和实践技巧。这个源代码集合包括了从基础语法到高级特性的各种示例,旨在帮助初学者逐步掌握Python编程。 在Python的基础部分...

    python教程英语版-Python基础教程第3版英文原版pdf.pdf

    python教程英语版_Python基础教程第3版英⽂原版pdf 资源名称:Python基础教程第3版 英⽂原版pdf Magnus Lie Hetland⼜更新他的 "Beginning Python From Novice to Professional"了,该书为第三版英⽂,基于Python3.5...

    Python基础入门教程 由浅入深讲解清晰 第1章 基础知识 (共44页).ppt

    【课程列表】 Python基础入门教程 由浅入深讲解清晰 第1章 ...Python基础入门教程 由浅入深讲解清晰 第8章 异常处理结构与程序调试 (共44页).ppt Python基础入门教程 由浅入深讲解清晰 第9章 GUI编程 (共43页).ppt

Global site tag (gtag.js) - Google Analytics