少说话多写代码之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


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

查看所有标签

猜你喜欢:

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

Web Form Design

Web Form Design

Luke Wroblewski / Rosenfeld Media / 2008-5-2 / GBP 25.00

Forms make or break the most crucial online interactions: checkout, registration, and any task requiring information entry. In Web Form Design, Luke Wroblewski draws on original research, his consider......一起来看看 《Web Form Design》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具