异常处理其他内容

主动抛出异常

语法:raise 异常种类(异常信息)

age = input("请输入你的年龄:")
if not age.isdigit():
    raise TypeError("年龄是整形")#这样就提前预知错的发生
print("十年后,你%s"%(int(age)+10))#若不规范输入就会抛出异常

用raise 抛出的异常也可使用try except接受

try:
    age = input("请输入你的年龄:")
    if not age.isdigit():
        raise TypeError("年龄是整形")  # 这样就提前预知错的发生
    print("十年后,你%s" % (int(age) + 10))  # 若不规范输入就会抛出异常
except Exception:
    print("出错了")

断言:

可以理解为理解断定,就是很清楚 很明确的

什么时候使用断言

下面的代码必须依赖上面代码的正确性

语法

assert 结果为BOOL的表达式

如果值为True则继续往下执行

为False抛出一个AssertionError 表示断言失败

没有assert也可以使用if来实现效果,但是assert节省代码。

li = []
li.append("aa")
li.append("aa")
assert len(li)>3
print(next(li))
print(next(li))
print(next(li))

#

自定义异常类型

当系统提供的异常类型,中并没有你想要的错误匹配,这时候就需要自定义异常类型的

语法:

class 自定义异常的类名(BaseException):

总结的来说:之所以自定义异常类型,是为了更具体描述你的错误,让使用者一眼就看出来

定义:

class UnLikeErroe(BaseException):
    def __init__(self, msg):
        self.msg = msg

使用跟其他异常相同:

def haha():
    yuyan = input("请输入你想说的话:")
    if yuyan == "chinese":
        print("正好听")
    else:
        raise UnLikeErroe("再说一遍")

再try   exception 异常类名  使用 as可以接受异常对象

try:
    haha()
except UnLikeErroe as unlike:  # unlike 就是异常对象起别名
    print(unlike)

异常处理的使用场景

不应该滥用try except

什么时候用?

如果你知道为什么出错,应该把代码修改正确,而不是加上try except。只有当你不清楚为什么异常的时候!这时候才使用try except

 

posted @ 2018-11-01 16:55  msjaxuexi  阅读(145)  评论(0编辑  收藏  举报