• 全捕捉


    #前面了解了很多异常,是否所有异常都可以捕捉的呢?其实并非如此。如下示例:
     1 #!/usr/bin/python3
     2 #-*-coding:UTF-8-*-
     3 #异常9.7
     4 
     5 def model_exception(x,y):
     6     try:
     7         a=x/y
     8         b=name
     9     except(ZeroDivisionError,NameError,TypeError)as e:
    10         print(e)
    11 model_exception(2,'')
    #在该示例中,调用函数时有一个实参传入的是空值,程序执行结果如下:
    1 D:Pythonworkspacedatatime20171219>python 异常9.7.py
    2 unsupported operand type(s) for /: 'int' and 'str'
    #由结果看到,这里抛出的信息并不像我们之前看到的那样,带有明显的Error关键词或异常词。此处只是告知不支持的操作类型。
    #在实际编码过程中,即使程序能处理好几种类型的异常,但有一些异常还是会从我们手掌中溜走。上面示例中的异常就是逃过了try/except语句的检查,对于这种情况我们根本无法预测会发生什么,也无法提前做任何准备。在这种情况下,与其使用不是捕捉异常的try/except语句隐藏异常,不如让程序立即崩溃。
    #如果要处理这种异常,该如何操作。示例如下:
     1 #!/usr/bin/python3
     2 #-*-coding:UTF-8-*-
     3 #异常9.7
     4 
     5 def model_exception(x,y):
     6     try:
     7         a=x/y
     8         b=name
     9     except:
    10         print('Error happend')
    11 
    12 model_exception(2,'')
    #程序执行结果如下:
    1 D:Pythonworkspacedatatime20171219>python 异常9.7.py
    2 Error happend
    #由程序和执行结果看到,可以在except子句种忽略所有异常类,从而让程序输出自己定义的异常信息。
    #当然,这里只是给出了一种可参考的解决方式。从实用性方面讲,不建议这么做,因为这样捕捉异常非常危险,会隐藏所有没有预先想到的错误。建议使用抛出异常的方式处理,或对异常对象e进行一些检查。
  • 相关阅读:
    数组返回NULL绕过
    69.x的平方根
    1277.统计全为1的正方形子矩形
    221.最大正方形
    572.另一个树的子树
    983.最低票价
    98.验证二叉排序树
    53.最大子序和
    5386.检查一个字符串是否可以打破另一个字符串
    5385.改变一个整数能得到的最大差值
  • 原文地址:https://www.cnblogs.com/DLHe/p/8175636.html
Copyright © 2020-2023  润新知