python|exm6-1try-except结构|raise关键字|异常类型

目录

一、try-expect

1. 多个try-expect结构的使用

1.1 捕捉特定异常

1.2 捕捉全部异常

1.3 所有异常合并处理

2. try-except-else-finally 结构

二、raise 关键字

一、try-expect

        try-expect 结构是 Python 中用于异常处理的关键机制。它允许你捕获并处理代码中可能发生的异常,从而避免程序崩溃,并提供更友好的错误提示或恢复机制。

基本语法:

"""
try 块:包含可能引发异常的代码。
except 块:捕获并处理特定类型的异常。
as:将异常对象赋值给一个变量,便于进一步处理。
"""
try:pass    # 可能出现错误的代码
except 异常类型 as 异常对象:pass    # 处理异常的代码

1. 多个try-expect结构的使用

1.1 捕捉特定异常

try:num = int(input("请输入一个整数: "))result = 10 / numprint("结果是:", result)
except ValueError:  # 值错误print("输入的不是整数!")
except ZeroDivisionError: # 除数为0的错误print("除数不能为零!")

输出结果:分别是捕捉两种不同错误下的输出情况

请输入一个整数: 5.6
输入的不是整数!
请输入一个整数: 0
除数不能为零!

1.2 捕捉全部异常

        使用expect Exception 可以捕获所有异常(不推荐,除非你知道自己在做什么)

try:num = int(input("请输入一个整数: "))result = 10 / numprint("结果是:", result)
except Exception as e:print(f"发生错误: {e}")

不管是哪种错误,最后都会输出:"发生错误"

请输入一个整数: 5.6
发生错误

1.3 所有异常合并处理

try:num = int(input("请输入一个整数: "))result = 10 / numprint("结果是:", result)
except (ValueError, ZeroDivisionError) as e:print(f"发生错误: {e}")

输出结果:

请输入一个整数: 4.5
发生错误: invalid literal for int() with base 10: '4.5'

2. try-except-else-finally 结构

 如果 try 块中的代码没有引发异常,则执行 else 块。

无论是否发生异常,finally 块中的代码都会执行。通常用于释放资源(如关闭文件、断开网络连接等)。

try:file = open("example.txt", "r")content = file.read()print(content)
except FileNotFoundError:print("文件未找到!")
finally:print("文件已关闭。")

输出结果:在这里说明发生异常的输出情况

文件未找到!
文件已关闭。

二、raise 关键字

        在Python编程中,raise语句用于手动引发异常,这是处理错误和控制程序流程的常用方法。raise可以单独使用,也可以与异常类名和描述信息一起使用,以提供更具体的错误信息。通过try-except结构,可以捕获并处理手动引发的异常,确保程序的正常执行。

基本语法:

raise [exceptionName [(reason)]]
"""
这里,exceptionName是要引发的异常类的名称,reason是对异常的描述信息。如果省略reason,则在引发异常时不会附带任何异常描述信息。如果完全省略可选参数,则raise会引发当前上下文中捕获的异常,或默认引发RuntimeError异常。
"""
try:gender=input('请输入你的性别:')if gender!='男' or gender!='女':raise ValueError('性别只能是男或女') # raise 主动引发异常,在这里指定的异常是Exception
except ValueError as e:print(e)
# 这里错误类型要使用已定义的异常类型

输出结果:

请输入你的性别:gou
性别只能是男或女

三、异常类型的产生 

"""
(1)ZeroDivisionError  除数为0的错误 division n.除法
print(10/0)(2)IndexError  索引错误
lst=[10,20,30,40]
print(lst[4])    序列里总共4个元素,索引是0,1,2,3(3)KeyError 字典取值时出现的问题
d={'name':'zj','age':20}
print(d['gender'])  要输出字典中key为'gender'对应的值,不存在(4)NameError
print(hello)   输出一个没加引号的字符串时,会认为它是一个被定义的变量,上文不定义,就会出错(5)SyntaxError  Python语法错误
print('hello)    只加了一个引号(6)ValueError  值传入异常
print(int('a'))    int()是将一个变量转为整形,在这里传入的'a'未经过定义,所以传入的是一个字符串,不符合要求(7)AttributeError 属性或方法不存在的异常 attribute n.属性;特征;性质;定语
i=10
print(i.name) i是一个变量,没有name这个方法(8)TypeError
print('hello'+123) 用+连接字符串,不能连接整数(9)IndentationError  缩进异常print('hello')
"""

若有错误,敬请批评指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小蓝的括号串1(栈,蓝桥云课)

问题描述 小蓝有一个长度为 nn 的括号串,括号串仅由字符 ( 、 ) 构成,请你帮他判断一下该括号串是否合法,合法请输出 Yes ,反之输出 No 。 合法括号序列: 空串是合法括号序列。 若 ss 是合法括号序列,则 (…

Centos7配置本地yum源

Centos7配置本地yum源 1、基于iso镜像的centos源 1.1 准备iso <span style"color:#000000"><span style"background-color:#ffffff"><code class"language-bash"><span style"color:#008000"># 首先看自己使用…

VNA操作使用学习-14 再测晶振特性

再测一下4Mhz晶振&#xff0c;看看特性曲线&#xff0c;熟悉一下vna使用。 s11模式&#xff0c;找遍了各种format都无法显示&#xff0c;只有这一种&#xff08;s11&#xff0c;Resistance&#xff09;稍微显示出一个谐振&#xff0c;但是只有一个点。 s21模式 这是201p&#…

Tr0ll2靶机详解

一、主机发现 arp-scan -l靶机ip&#xff1a;192.168.55.164 二、端口扫描、漏洞扫描、目录枚举、指纹识别 2.1端口扫描 nmap --min-rate 10000 -p- 192.168.55.164发现21端口的ftp服务开启 以UDP协议进行扫描 使用参数-sU进行UDP扫描 nmap -sU --min-rate 10000 -p- 19…

基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手

基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手 一、准备工作&#xff1a;组装你的"数码工具箱" 1. 安装基础工具&#xff08;Python环境&#xff09; 操作步骤&#xff1a; 访问Python官网下载安装包安装时务必勾选Add Python to…

GitHub 超火的开源终端工具——Warp

Warp 作为近年来 GitHub 上备受瞩目的开源终端工具&#xff0c;以其智能化、高性能和协作能力重新定义了命令行操作体验。以下从多个维度深入解析其核心特性、技术架构、用户评价及生态影响力&#xff1a; 一、背景与核心团队 Warp 由前 GitHub CTO Jason Warner 和 Google 前…

使用C#创建安装Windows服务程序

在实际工作中&#xff0c;如果我们需要开发一个运行在后台&#xff0c;无需用户交互&#xff0c;不需要界面的应用程序&#xff0c;我们可以通过Windows服务来实现。 本文主要介绍如何基于C#创建一个Windows服务&#xff0c;来实现西门子PLC的定时读取保存。 一、Windows服务…

docker、docker-compose常用命令

初学者使用的docker、docker-compose常用命令&#xff0c;日常练习&#xff0c;环境简单搭建。 一、docker 1.1、安装docker 1.1.1、yum安装 #安装docker的数据存储驱动包 yum install -y yum-utils device-mapper-persistent-data lvm2 #设置新的安装源、下载配置文件到…

阿里的MNN源码如何编译成so文件,供Android调用

在Ubtuntu下面的编译&#xff0c;先整理编译环境 1、安装环境依赖 # 安装必要工具 sudo apt update sudo apt install -y cmake ninja-build git wget # 安装Android NDK&#xff08;建议使用r21版本或更高&#xff09; wget https://dl.google.com/android/repository/a…

吴恩达机器学习笔记复盘(六)梯度下降算法

简介 梯度下降&#xff08;Gradient Descent&#xff09;是一种常用的优化算法&#xff0c;广泛应用于机器学习、深度学习等领域&#xff0c;在这里是用于求J&#xff08;w,b&#xff09;局部最小值。 我自己觉得这样说有点过于抽象。换个直观点的说法就是&#xff0c;一个人…

使用JAVA-进行维吉尼亚密码的解密与加密

维吉尼亚密码 来源于百度百科 维吉尼亚密码_百度百科 具体代码 import java.util.*;public class WJMYmm {//常量 26public static final int N 26;//密码public static void main(String[] args) {//字母String ZM"abcdefghijklmnopqrstuvwxyz";char[] zm ZM.…

Java DelayQueue 延迟队列

Java DelayQueue 延迟队列 1. DelayQueue 概述 DelayQueue 是 Java 并发包&#xff08;java.util.concurrent&#xff09;中的一个 无界 阻塞队列&#xff0c;用于存储实现了 Delayed 接口的元素。队列中的元素只有在达到指定的延迟时间后才能被获取。 2. DelayQueue 的底层…

LeetCode 解题思路 22(Hot 100)

解题思路&#xff1a; 递归思路&#xff1a; 传入当前节点的最小值和最大值&#xff0c;递归判断左右子树。结束条件&#xff1a; 当前节点为空或不满足二叉搜索树。 Java代码&#xff1a; class Solution {public boolean isValidBST(TreeNode root) {return isValidBST(ro…

乐享数科:政策助推假日经济,2月普惠金融-景气指数稳中有升

数据显示&#xff0c;2025年2月普惠金融-景气指数达48.99点&#xff0c;较1月上升0.03点。 企业运行持续向好&#xff0c;企业信心预期和经营活力回升。“假日经济”与“政策效应”相互叠加&#xff0c;市场供求格局有所改善&#xff0c;景气水平稳步恢复。 普惠金融-景气指数…

leetcode日记(108)验证回文串

看上去很简单&#xff0c;其实很麻烦。 一开始写的递归&#xff0c;但是内存超限……搜了下发现原因是每次递归调用都会创建一个新的字符串副本&#xff0c;这在处理长字符串时会占用大量内存。 class Solution { public:bool isPalindrome(string s) {if(s.size()0||s.size(…

用css绘制收银键盘

最近需求说需要自己弄个收银键盘&#xff0c;于是乎直接上手搓 主要基于Vue3写的&#xff0c;主要是CSS <template><view class"container"><view class"info"><image class"img" src"" mode"">&l…

智能车间管理系统(源码+文档+讲解+演示)

引言 在现代制造业中&#xff0c;智能车间管理系统正成为推动工业4.0和智能制造的关键力量。它通过整合先进的信息技术和自动化技术&#xff0c;优化生产流程&#xff0c;提高生产效率&#xff0c;降低成本&#xff0c;并确保产品质量。 系统概述 智能车间管理系统采用前后端…

Model Context Protocol - Prompts

1. 概述 Model Context Protocol (MCP) 提供了一种标准化的方式&#xff0c;使服务器能够向客户端暴露提示模板&#xff08;prompts&#xff09;。Prompts 是服务器提供的结构化消息和指令&#xff0c;用于与语言模型进行交互。客户端可以发现可用的提示、获取其内容&#xff…

办公自动化:使用 Python 生成 Word 文件:自动生成数据库文档 Word 文件

简简单单 Online zuozuo :本心、输入输出、结果 文章目录 办公自动化:使用 Python 生成 Word 文件:自动生成数据库文档 Word 文件前言一、环境准备二、编写代码三、编写 Word 模版文件接收数据四、运行代码,生成文件,大功告成五、说明办公自动化:使用 Python 生成 Word 文…

嵌入式GPRS协议面试题及参考答案

目录 GPRS 的全称是什么?简述其核心设计目标。 GPRS 中 DNS 服务器的核心作用是什么? BTS 在 EDGE 升级时需要哪些硬件调整? GPRS 的时隙分配策略如何影响多用户并发? 解释 PDCH(分组数据信道)的动态分配机制。 如何判断天馈接反或鸳鸯线问题? GPRS 的 RLC/MAC 层…