少说话多写代码之Python学习045——类07(异常)

栏目: Python · 发布时间: 6年前

内容简介:异常是程序遇到错误了,这种错误有的是已知的,可预判的。有些是未知的,莫名其妙的。比如,输出

异常是程序遇到错误了,这种错误有的是已知的,可预判的。有些是未知的,莫名其妙的。

比如,

s=1/0
print(s)

输出

Traceback (most recent call last):
  File "D:/work/Python/Class7.py", line 4, in <module>
    s=1/0
ZeroDivisionError: division by zero

对于一段代码,如果认为可能出现异常,可以对整段代码进行捕获异常。

try:
    b=0
    s=1/b
    print(s)
except Exception:
   print('出现异常:没有区分异常的种类')

输出

出现异常:没有区分异常的种类

捕获异常后可以像上面这样打印一个提示,也可以用raise抛出。交由调用的地方去捕获或者处理。

完整的异常捕获其实是这样,

try:
    b=0
    s=1/b
    print(s)
except Exception:
   print('出现异常:没有区分异常的种类')
finally:
    b=1
    s=1/b
    print(s)

输出

出现异常:没有区分异常的种类
1.0

上面代码中except Exception:处,可以有多个 except,比如,except  ZeroDivisionError:。有兴趣可以试试。

对于异常的语法其实大可不必深究和钻研,只需要会在你认为可能出错的地方捕获,然后处理或者抛出异常即可。

捕获异常有一个强大手段就是捕获所有异常,叫Exception,当然很多 程序员 认为捕获所有异常无法彰显出自己的技术是多么的牛逼,所以,会用一用一些编程语言中创建好的有针对性的异常,比如 Python 中有这些是创建好的异常。

Exception,任何异常

AttributeError,引用或则赋值失败异常

IOError,打开不存在的文件的异常

IndexError,使用序列中不存在的索引的异常

KeyError,使用映射中不存在的key的异常

NameError,找不到变量的异常

SyntaxError,代码形式错误的异常

TypeError,函数应用错误的类型的异常

ValueError,对象使用不合适的值的异常

ZeroDivisionError,除数为0的异常

对于有些程序员来说使用库里创建的异常不算本事,所以也可以自己创建异常。哎,如果碰到秀技术的也确实没办法,所以为了万一碰到也好读懂代码,可以简单了解下自定义异常。

class MySelfException(Exception):
    pass
e=MySelfException

使用MySelfException和使用Exception一样。

对于异常,有的时候需要捕获自己处理,但是有的时候宁可让异常抛出甚至中断程序,因为如果为了程序不崩溃而增加异常捕获,会导致有些错误无法知道,从而导致运算结果完全错误,这样造成的结果也许远比程序崩溃要大的多。

工程文件下载: https://download.csdn.net/download/yysyangyangyangshan/10792410


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

周鸿祎自述

周鸿祎自述

周鸿祎 / 中信出版社 / 2014-8 / 45.00元

在很多方面,周鸿祎都是互联网领域的颠覆者。他重新定义了“微创新”,提出从细微之处着手,通过聚焦战略,以持续的创新,最终改变市场格局、为客户创造全新价值。他第一个提出了互联网免费安全的理念,也由此让奇虎360拥有了超过4亿的用户。 在《周鸿祎自述:我的互联网方法论》中,周鸿祎首次讲述了自己的互联网观、产品观和管理思想,厘清了互联网产品的本质特征和互联网时代的新趋势,列举了颠覆式创新在现实中的实......一起来看看 《周鸿祎自述》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码