1  什么是异常

异常是一个事件,该事件会在程序执行过程中发生,影响程序的正常执行,一般情况下,在Python无法正常处理程序时就会发生异常。


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

python全局捕获错误 python 捕捉错误_python全局捕获错误

Python中重要的内建异常类型:

  • Exception:常规错误的基类
  • AttributeError:对象没有这个属性
  • IOError:输入/输出操作失败
  • IndexError:序列中没有此索引
  • KeyError:映射中没有这个键
  • NameError:未声明/初始化对象(没有属性)
  • SyntaxError:Python语法错误
  • SystemError:一般解释器系统错误
  • ValueError:串入无效的参数

2  捕获单个异常

在程序开发中,如果对某些代码的执行不能确定是否正确,可以增加try来捕获异常,捕获异常最简单的语法格式:

try:  <语句1># 尝试执行的代码except <异常类型1>:  <语句2># 如果在try部分引发了异常

比如:

def exp_exception(x, y):    try:        a = x/y        print("a = ", a)        return a    except Exception:        print("程序出现异常,异常信息:被除数为0!")print(exp_exception(6, 0))

3  捕捉多个异常

捕获异常最简单的语法格式:

try:  <语句1># 尝试执行的代码except <异常类型1>:  <语句2># 如果在try部分引发了异常except <异常类型2>:  <语句3># 如果在try部分引发了异常


比如:

def mult_exception():    try:        # 提示用户输入一个整数        num = int(input("请输入一个整数:"))        result = 8/num        print(result)    except ZeroDivisionError:        print("除0错误!")    except ValueError:        print("请输入正确的整数!")mult_exception()

4  块捕捉多个异常


指一个try对应一个except子句,同时捕捉一个以上的异常 except

( 异常类型1 , 异常类型2,…… ) 。比如:

def model_exception():    try:        b = name        a = x/y    except(ZeroDivisionError, NameError, TypeError):        print("z这个异常是ZeroDivisionError / NameError / TypeError")model_exception(2, 0)

5  异常捕获的完整语法

在实际开发中,为了能够处理复杂的异常情况,完整的异常语法如下:

try:  1>except 1>:  2>except 2,异常类型  3>except Exception as result:  print(“未知错误:%s” % result)# 打印错误信息else:  4>finally:  5>

6  抛出异常


在开发中,除了代码执行出错,Python解释器会抛出异常之外,还可以根据应用程序特有的业务需求主动抛出异常。 一个普通的异常:raise NameError 一个带有错误提示的异常:raise NameError( “ 这是一个NameError异常 ” )

7  捕捉对象


在程序执行时,可能会遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的响应。如果希望在except子句中访问异常对象本身,也就是看到一个异常对象真正的异常信息,可以使用as别名的形式,我们称为捕捉对象。

try:  1>except 1>:  2>except 2,异常类型  3>except Exception as result:  print(“未知错误:%s” % result)


当Python抛出异常时,最后一行错误信息的第一个单词就是错误类型。

def mult_exception():    try:        # 提示用户输入一个整数        num = int(input("请输入一个整数:"))        result = 8/num        print(result)    except ValueError:        print("请输入正确的整数!")    except Exception as result:        print("未知错误:%s!" % result)mult_exception()


运行结果如下:

python全局捕获错误 python 捕捉错误_抛出异常_02