python总结高阶-异常处理机制

异常是什么?

在这里插入图片描述
工作中,程序遇到的情况不可能完美。比如:程序要打开某个
文件,这个文件可能不存在或者文件格式不对;程序在运行
着,但是内存或硬盘可能满了等等。

软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们

称之为异常,英文是: Exception ,意思是例外。遇到这些例外情况,
或者叫异常,我们怎么让写的程序做出合理的处理,安全的退出,
而不至于程序崩溃呢?我们本章就要讲解这些问题。

try和except结构

try…一个except结构
try…except 是最常见的异常处理结构。结构如下:

try:
 被监控的可能引发异常的语句块
except  BaseException [as  e]:
 异常处理语句块

try…一个except结构

在这里插入图片描述

try…多个except结构

 try:
    a = input("请输入被除数:")
    b = input("请输入除数:")
    c = float(a)/float(b)
    print(c)

 except ZeroDivisionError:
    print("异常:除数不能为0")
 except TypeError:
    print("异常:除数和被除数都应该为数值类型")
 except BaseException as e:
    print(e)
    print(type(e))

try…except…else结构

try…except…else 结构增加了 else块 。如果 try 块中没有抛出异常,则执行
else 块。如果 try 块中抛出异常,则执行 except 块,不执行 else 块。

 try:
    a = input("请输入被除数:")   
     b = input("请输入除数:")
    c = float(a)/float(b)
 except BaseException as e:
    print(e)
 else:
    print("除的结果是:",c)

try…except…finally结构

try…except…finally 结构中, finally 块无论是否发生异常都会被执行;通常
用来释放 try 块中申请的资源。

try:
    a = input("请输入一个被除数:")
    b = input("请输入一个除数:")
    c = float(a)/float(b)
 except BaseException as  e:
    print(e)
 else:
    print(c)
 finally:
    print("我是finally中的语句,无论发生异常与否,都执行!")

 print("程序结束!")

return语句和异常处理问题

由于 return 有两种作用:结束方法运行、返回值。我们一般不把 return
放到异常处理结构中,而是放到方法最后。

常见异常

在这里插入图片描述

常见异常的解决

Python中的异常都派生自 BaseException 类

SyntaxError :语法错误
    int a =3
        ^	
SyntaxError: invalid syntax
NameError :尝试访问一个没有申明的变量
    print(a)
NameError: name 'a' is not defined
ZeroDivisionError :除数为0错误(零除错误)
    a = 3/0
ZeroDivisionError: division by zero

ValueError :数值错误
TypeError :类型错误
AttributeError :访问对象的不存在的属性
IndexError :索引越界异常
KeyError :字典的关键字不存在

自定义异常类

#测试自定义异常类

 class AgeError(Exception):  #继承Exception
    def __init__(self,errorInfo):
        Exception.__init__(self)
        self.errorInfo = errorInfo
    def __str__(self):
        return str(self.errorInfo)+",年龄错误!应该在1-150之间"


 ############测试代码################
 if __name__ == "__main__":   #如果为True,则模块是作为独立文件运行,可以执行测试代码
    age = int(input("输入一个年龄:"))
    if age<1 or age>150:
        raise AgeError(age)
    else:
        print("正常的年龄:",age)
  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个双鱼座的测开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值