少说话多写代码之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-6-1 / 55元

随着中国互联网金融浪潮高涨,P2P、众筹、余额宝、微信支付等新生事物层出不穷,加之大数据等时髦概念助阵,简直是乱花渐欲迷人眼,令媒体兴奋,公众狂热。那么,互联网金融真的能“颠覆”传统金融吗?当互联网思维对撞传统金融观念,是互联网金融的一统天下,还是传统金融业的自我革新?究竟是谁动了金融业的奶酪? 本书作者早期试水创立具有互联网金融雏形的网站,后来成为互联网金融的资深投资人,基于其多年在该领域......一起来看看 《风吹江南之互联网金融》 这本书的介绍吧!

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

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码