码迷,mamicode.com
首页 > 其他好文 > 详细

全捕捉

时间:2018-01-02 11:32:45      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:data   font   种类   情况下   class   方式   try   end   没有   

#前面了解了很多异常,是否所有异常都可以捕捉的呢?其实并非如此。如下示例:
 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:\Python\workspace\datatime\20171219>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:\Python\workspace\datatime\20171219>python 异常9.7.py
2 Error happend
#由程序和执行结果看到,可以在except子句种忽略所有异常类,从而让程序输出自己定义的异常信息。
#当然,这里只是给出了一种可参考的解决方式。从实用性方面讲,不建议这么做,因为这样捕捉异常非常危险,会隐藏所有没有预先想到的错误。建议使用抛出异常的方式处理,或对异常对象e进行一些检查。

全捕捉

标签:data   font   种类   情况下   class   方式   try   end   没有   

原文地址:https://www.cnblogs.com/DLHe/p/8175636.html

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