码迷,mamicode.com
首页 > 编程语言 > 详细

Python基础---python中的异常处理

时间:2017-07-10 21:58:16      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:情况   turn   class   exce   异常处理   可读性   bsp   导致   except   

Python中的异常处理

一、什么是异常处理

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

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

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

二、为什么要进行异常处理

python解析器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,谁会去用一个运行着突然就崩溃的软件。

所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性。

三、异常处理的语法

1.基本语法:

python为每一种异常定制了一个类型,然后提供了一种特定的语法结构用来进行异常处理

语法:

 try:
     被检测的代码块
 except 异常类型:
    try中一旦检测到异常,就执行这个位置的逻辑
2.异常类只能用来处理指定的异常情况,如果非指定异常则无法处理
 # 未捕获到异常,程序直接报错
  
s1 = ‘hello‘
try: int(s1) except IndexError as e: print e
3.多分支
 s1 = ‘hello‘
try: int(s1) except IndexError as e: print(e) except KeyError as e: print(e) except ValueError as e: print(e)
基本用不到,有哪个程序员会写一堆的异常用来处理的。。。
4.万能异常 在python的异常中,有一个万能异常:Exception,他可以捕获任意异常,即:
1 s1 = ‘hello‘
2 try:
3     int(s1)
4 except Exception as e:
5     print(e)
5.异常处理中的else
 s1 = ‘hello‘
 try:
      int(s1)
 except IndexError as e:
     print(e)
 except KeyError as e:
     print(e)
 except ValueError as e:
     print(e)
 else:
     print(‘try内代码块没有异常则执行我‘)#只有在没有异常类型的情况下才能执行else后的代码
 finally:
     print(‘无论异常与否,都会执行该模块,通常是进行清理工作‘) #无论有没有异常都会执行在finally后面的代码
6.自己创造异常
 try:
     raise TypeError(‘类型错误‘)
 except Exception as e:
    print(e)
  class EgonException(BaseException):
      def __init__(self,msg):
          self.msg=msg
    def __str__(self):
         return self.msg
 
 try:
     raise EgonException(‘类型错误‘)
 except EgonException as e:
     print(e) 
7.断言
1 # assert 条件
 
 assert 1 == 1#断定条件满足这个条件才会执行代码否则的话会抛出异常。

 assert 1 == 2
8.写在最后的话
注意:

  try...except应该尽量少用,因为它本身就是你附加给你的程序的一种异常处理的逻辑,与你的主要的工作是没有关系的
  这种东西加的多了,会导致你的代码可读性变差。

  只有在有些异常无法预知的情况下,才应该加上try...except,其他的逻辑错误应该尽量修正


 

 

 

Python基础---python中的异常处理

标签:情况   turn   class   exce   异常处理   可读性   bsp   导致   except   

原文地址:http://www.cnblogs.com/niubin/p/7147386.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!