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

异常处理

时间:2018-11-01 22:33:40      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:class   lis   []   重点   语法检查   typeerror   file   数据   keyboard   

异常是错误发生前的一种信号,如果没有人来处理这个信号,就会中断执行并且抛出错误信息。

异常分为语法检查异常和运行时异常:

语法检查异常是最低级的异常 在编译器里自动提示 在文本编辑器时当你运行代码解释器就会检查语法    绝对不能犯语法检查异常的错误

运行时异常是我们处理的重点,通常在代码运行时才会被发现,在运行时发生异常并且没有正确处理,就会抛出错误信息 并中断程序执行

我们学习异常处理是为了让我们的程序更加稳定,保证健壮性

常见的异常:
NameError 找不到这个名字 变量或者函数 ValueError 在调用一个函数时给的值不正确 TypeError 类型错误 ZeroDivisionError 除数不能为0 KeyError 没有这个key IndexError 索引不存在 StopIteration 没有更多的值可以迭代 FileNotFoundError 文件不存在 io.UnsupportedOperation 文件的操作不支持 AttributeError 没有这个属性 KeyboardInterrupt 程序被强行终止
异常处理写法:
多异常类型处理
try:
    name
    [][1]
    1/0
except NameError:
    print(name)
except IndexError:
    print(list)
except ZeroDivisionError:
    print(zero)

===>
name 

强调:一旦try 中有代码抛出了异常 后面的代码全都不执行


多异常类型处理2
try:
    name
    [][1]
    1/0
except (NameError,IndexError,ZeroDivisionError):
    print(name,list,zero)

万能异常类型 Exception 或者 BaseException  基于面向对象的继承与多态

try:
    name
    [][1]
    1/0
except Exception:
    print(name,list,zero)

不常用的语法

 

try:
    name

except Exception:
    print(name)
else:
    print(代码正确)#try中没有发生异常时运行
finally:
    print(===>)#不管有没有发生异常都会运行

 

在下面的代码必须依赖上面代码的正确数据时可以使用断言

name = xia
assert name == egon‘ #代码错误时可以抛出一个AssertionError 来表表示断言失败
print(name)

 

自定义异常类型

技术分享图片
主动抛出异常:
Class =input(请输入班级名)
if Class == python:
    print(yes)
else:
    raise ValueError(你输入的班级名不对)

自定义异常:
class CusError(BaseException):
    def __init__(self,name):
        self.name =name

def func():
    ls = input(y/n:)
    if ls == y:
        print(正确)
    else:
        raise CusError(xia)# 主动抛出异常
try:
    func()
except CusError as e:#使用e来获取异常对象
    print(e.name)
例子

 

 

异常处理

标签:class   lis   []   重点   语法检查   typeerror   file   数据   keyboard   

原文地址:https://www.cnblogs.com/xiamenghan/p/9892407.html

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