当前位置: 首页 > article >正文

python-异常处理笔记

异常的介绍

程序在运行时,如果python解释器遇到一个错误,则会停止程序的执行,并且提示一些错误信息,就是异常。
程序停止执行,并且提示错误信息这个动作,通常称之为:抛出异常
例:错误类型:错误描述信息
FileNotFoundError: [Errno 2] No such file or directory: ‘test1.txt’

捕获异常的基本语法

捕获异常:程序代码在执行时,如果遇到异常,程序就会终止,不会继续执行
需求:程序遇到异常后,不会结束,可以继续执行
需求实现:使用异常捕获

try:
	#尝试执行的代码
except:   #可以捕获任意类型的异常
	#出现异常时执行的代码

举例

num=input('请输入数字:')
try:
    print(int(num))
except:
    print('输入错误')
控制台:
请输入数字:i
输入错误
请输入数字:12
12

捕获指定类型的异常

发生的异常可能存在多种,针对不同类型的异常,解决处理的方案不一样

try:
	#尝试执行的代码
except 异常类型1:  
	#出现异常类型1时执行的代码
except 异常类型2:  
	#出现异常类型2时执行的代码
except ......:  
	pass

在这里插入图片描述

num=input('请输入一个整数数字:')
try:
    print(8/int(num))
except ZeroDivisionError:
    print('被除数不能为零')
except ValueError:
    print('输入内容非数字,请输入一个整数数字')
控制台:
请输入数字:0
被除数不能为零
请输入一个整数数字:e
输入内容非数字,请输入一个整数数字
请输入一个整数数字:4
2.0

捕获未知类型的异常(使用最多)

try:
	#可能发生异常的代码
except Exception as 变量:   #Exception常见异常的父类,变量是异常对象,print的时候可以通过该变量对象打印异常信息
	#发生异常执行的代码

num=input('请输入一个整数数字:')
try:
    print(8/int(num))
except Exception as e:
    print(f'发生错误:{e}')
控制台:
请输入一个整数数字:j
发生错误:invalid literal for int() with base 10: 'j'

捕获异常的完整结构

try:
      #可能发生异常的代码
except 异常类型:
	#发生了指定类型的异常执行的代码
except exception as e:
	#发生了其他类型异常执行的代码
else:
	#没有发生异常执行的代码
finally:
	#不管有没有发生异常,都会执行的代码
	

异常的传递

异常传递是python中已经实现好的功能,不需要我们写代码实现
异常传递是指,在函数的嵌套调用过程中,如果发生了异常,没有进行捕获,会将这个异常传递到函数调用的地方,直到被捕获为止,如果一直没有捕获,才会报错,终止执行
在这里插入图片描述
由于异常具有传递性,为使代码简洁可以在最外层(主函数)抛出异常

def demo1():
    num=input("请输入一个整数:")
#    try:
#        num=int(num)
#    except ValueError:
#        print("您输入的不是整数!")
    return int(num)
def demo2():
    demo1()

if __name__ == '__main__':
    try:
        demo2()
    except Exception as e:
        print(e)

抛出异常

在执行代码的过程中,之所以会发生异常,终止代码执行,是因为代码执行遇到了raise关键字
raise关键字的作用,就是抛出异常,让代码终止执行
应用场景:自己书写代码模块,让别人使用,为了让别人按照你的规定去使用你的代码,你就可以在他不满足你条件的情况下,可以使用raise抛出异常

在这里插入图片描述

案例实现

在这里插入图片描述
方法一:

num=input('请输入一个数字:')
if num.isdigit():
    if int(num)%2==0:
        print('偶数')
    else:
        print('奇数')
else:
    print('输入错误')
print('程序运行结束')

方法二:

num=input('请输入一个数字:')
try:
    num=int(num)
except:
    print('输入错误')
else:
    if num%2==0:
        print('偶数')
    else:
        print('奇数')
finally:
    print('程序运行结束')

http://www.kler.cn/a/533144.html

相关文章:

  • Nacos 的介绍和使用
  • 【PDF提取局部内容改名】批量获取PDF局部文字内容改名 基于QT和百度云api的完整实现方案
  • 第 1 天:UE5 C++ 开发环境搭建,全流程指南
  • 基于Spring Security 6的OAuth2 系列之八 - 授权服务器--Spring Authrization Server的基本原理
  • MiniQMT与xtquant:量化交易的利器
  • 蓝桥杯备赛经验帖
  • pwn环境搭建手册(步骤清晰且附带详细命令)
  • Leetcode::922. 按奇偶排序数组 II
  • 基于Python实现机器视觉与深度学习相结合的项目
  • 数据结构(AVL树、B-Tree、B+Tree)
  • uniCloud(dcloud.net.cn)https证书配制
  • 性能优化中的数据过滤优化
  • RabbitMQ深度探索:从安装配置到高级应用的全面解析
  • 计算机网络笔记再战——理解几个经典的协议2
  • 在x86上使用debootstrap构建龙芯编译运行环境
  • 油漆面积——蓝桥杯
  • Chromium132 编译指南 - Android 篇(八):开始编译
  • 记录一次-Rancher通过UI-Create Custom- RKE2的BUG
  • 机器学习入门指南:快速上手与实践
  • Elixir语言的网络编程
  • Netty线上如何做性能调优?
  • 人工智能搜索的层级发展趋势:从信息检索到智能决策
  • Linux网络 | 进入数据链路层,学习相关协议与概念
  • java项目验证码登录
  • Linux 进程终止
  • BUU13 [极客大挑战 2019]BabySQL 1