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)

相关推荐

  1. 异常处理总结

    2024-01-07 03:30:02       28 阅读
  2. Python异常处理

    2024-01-07 03:30:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-07 03:30:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-07 03:30:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-07 03:30:02       87 阅读
  4. Python语言-面向对象

    2024-01-07 03:30:02       96 阅读

热门阅读

  1. Mysql数据库

    2024-01-07 03:30:02       59 阅读
  2. 练习-双指针的使用

    2024-01-07 03:30:02       56 阅读
  3. 快速删除node_modules文件夹

    2024-01-07 03:30:02       60 阅读
  4. 面试指南:指针

    2024-01-07 03:30:02       67 阅读
  5. vue之服务端渲染(SSR)

    2024-01-07 03:30:02       78 阅读
  6. 【软件测试】学习笔记-为什么要做自动化测试

    2024-01-07 03:30:02       64 阅读
  7. 取消UD程序

    2024-01-07 03:30:02       54 阅读
  8. 职业分析与计算机方向的选择、发展

    2024-01-07 03:30:02       58 阅读