Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客

因为某些现实的原因,在此将python面向对象这一节的博客暂时放到后面;进入了四月份后,自己的思绪伴随着春暖花开神游不止,这种神游伴随着痛苦,而与痛苦相伴的也可能是是阅历的增加与思想的趋于成熟。在豫中平原万里无云微风不燥鸟语花香的大学校园内,汇集了各路抽烟喝酒烫头的无处挥洒无处安放的青春的青年与天真无邪圆了自己大学梦的单纯学子。我前所未有的有“出一趟远门”的冲动,要去的地方还未建成高铁,如果要去只得坐将近20小时的火车前往。时间与空间将我限制在了这鱼龙混杂的象牙塔内...当然....限制我的还有金钱......

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第1张图片

对python异常处理这一节的学习就在一个美好的傍晚开始了。

有点惺惺相惜.....

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第2张图片

异常是程序在运行过程中,在特定条件下引发的错误。例如,打开不存在的文件、序列索引越界、不兼容类型之间执行运算等,都会产生异常。异常并非语法错误或程序逻辑错误。Python在运行程序时,首先会扫描程序检查语法错误。程序逻辑错误属于设计问题,非程序本身问题。
异常可以在程序运行过程中进行捕捉、处理,从而避免程序意外崩溃。对程序执行异常处理,是一种良好的编程习惯。

  • python异常处理机制:

异常处理是Python的一种高级工具,当异常发生时,程序会停止当前的所有工作,跳转到异常处理部分去执行。异常既可以是程序错误引发的,也可以由代码主动触发

  • 为什么使用异常处理:

在其他一些程序设计语言中, goto语句提供了超级跳转功能。不管goto语句处于代码的何处,均可跳转到goto目标位置。因为goto语句打乱了程序正常流程,也使程序变得提乱,难以阅读和调试,因此受到了不少非议。但不可否认的是, goto语句提供了程序跳转的便捷功能,只不过不能滥用;

是常处理机制像一种受控的goto结构,当错误发生时,错误被捕提处理,保证程速一步有序执行,而不是意外终止,
在Pthon中,异常处理常用于处理下列情况。

  • 错误处理:这是异常处理的典型应用,在程序中捕捉可能发生的错误,提供处理措施,例如直接忽略、打印错误、写异常日志等。Python使用try语句捕捉和处理异常。发生错误时,执行try语句中的异常处理代码,然后正常执行ty语句后面的代码。
  • 终极行为:在try语句中使用finaly定义终极行为,不管程序中是否发生异常,finally部分的代码都会执行。例如,在读写文件时,用finally定义文件关闭操作。
  • 利用异常处理实现非常规的流程控制。在代码中根据需要使用raise语句,主动抛出内置异常或是自定义的异常。

 

常见异常类型:
Python内置的常见异常类型如下:

.

  • SyntaxError: 语法错误。
  • AttributeError:访问对象属性时引发的异常,如属性不存在或不支持赋值等。
  • EOFError:使用input()函数读文件时,遇到文件结束标志EOF时发生的异常。文对象的read()和readline()方法遇到EOF时返回空字符串,不会引发异常。
  • ImportError:导入模块出错引发的异常。
  • IndexError:使用序列对象的下标超出范围时引发的异常。
  • Stoplteration:迭代器没有进一步可迭代元素时引发的异常。
  • IndentationError:使用了不正确的缩进时引发的异。
  • TabError:使用【Tab】键和空格缩进时不一致引发的异常。
  • TypeError:在运算或函数调用中,使用了不兼容的类型时引发的异常。
  • ZeroDivisionError:除数为0时引发的异常。

异常处理基本结构:

try:
    可能发生异常的代码
except 异常类型名称:
    异常处理代码
else:
    没有发生异常时执行的代码

在处理异常时,将可能引发异常的代码放在try语句块中。

在except语句中指明捕捉处理的异常类型名称, except语句块中为发生指定异常时执行的代码。

else语句块中为没有发生异常时执行的代码, else部分可以省略。
 

try语句按照如下方式工作;

 

使用try..except对代码中的异常进行捕捉处理时,发生异常则执行对应的处理代码,然后执行后继的代码。

  • 首先,执行try子句(在关键字try和关键字except之间的语句)
  • 如果没有异常发生,忽略except子句,try子句执行后结束。
  • 如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。 
  • 如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。

一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。

一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组,例如:

    except (ImportError, TypeError, NameError):
        pass

捕捉多个异常:

在异常处理结构中,可以使用多个except语句,以捕捉可能出现的多种异常:

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第3张图片

修改try语句代码,引发不同的异常:

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第4张图片

 

except...as 与统一处理:

可以在 except 语句中同时指定多种异常,以便使用相同的异常处理代码进行统一处理。

在 except 语句中可以使用 as 为异常类创建一个实例对象。例:

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第5张图片

代码中的“except (ZeroDivisionError,IndexError) as yichang: ”语句指定捕捉处理除零和下标越界两种异常,发生异常时,变量 bianliang 引用异常的实例对象。通过异常的实例对象,可进一步获得异常的类名和异常信息等数据。

 

捕捉所有异常:

在捕捉异常时,如果except语句中没有指明异常类型,则不管发生什么类型的异常,均会执行except 语句块中的异常处理代码。例:

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第6张图片

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第7张图片

异常处理结构的嵌套:

python允许在异常处理结构的内部嵌套另一个异常处理结构,在发生异常时,内部没有捕捉的异常可被外层捕捉:

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第8张图片

try...finally终止行为:

在异常处理结构中,可以使用finally定义终止行为。不管try语句是否发生异常,finally语句中的代码块都会被执行。例:

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第9张图片

注意在交互模式下不能一次执行多条语句。

主动引发异常:

python允许代码中使用raise或者assert语句主动引发异常。

raise语句:

raise语句基本格式如下:
 

raise 异常类名         #创建异常类的实例对象,并引发异常

raise 异常类实例对象    #引发异常类实例对象对应的异常

raise                 #重新引起刚刚发生的异常

 

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第10张图片

指定异常信息:

使用raise语句引发异常时,可以为异常类指定描述信息:

Python从零基础到入门 基础知识 7 Python 异常处理 夜车星繁的博客_第11张图片

 

你可能感兴趣的:(学习笔记,零基础入门)