Pyhton之异常处理
Pyhton之异常处理
- 异常处理
- 自定义异常
- 案例
异常处理
- 概念
异常是程序执行过程中出现的非正常流程现象。
异常是无法避免的,只能先预估出可能出现的异常现象,并提供对应的处理机制,在异常出现后保障程序不被中断执行。 - 基本语法
# 格式一:
try:# 可能引发异常现象的代码
except:# 出现异常现象的处理代码# 格式二:
try:# 可能引发异常现象的代码
finally:# try代码块结束后运行的代码# 格式三:
try:# 可能引发异常现象的代码
except:# 出现异常现象的处理代码
else:# 未出现异常现象的处理代码
finally:# try代码块结束后运行的代码
各代码块功能详细说明:
代码块名称 | 作用 | 说明 |
---|---|---|
try | 包裹可能引发异常的代码 | 被包裹的代码可能出现异常也可能不出现异常 |
except | 对出现的异常进行处理 | 异常处理代码块可以有多个,根据不同种类的异常定义不同的处理方案 |
else | 未出现异常的代码 | 当try代码块中没有出现异常时,try中代码执行完毕执行else中的代码 |
finally | 异常处理机制结束执行代码 | 无论try代码块中是否出现异常现象,都将执行finally代码块中的内容 |
- 异常精细化处理
异常处理可以根据不同种类的异常进行不同的处理方案设计,使用异常名称来进行区分。标准格式如下:
except 异常类名1 as 变量名:# 出现异常现象的处理代码
except 异常类名2 as 变量名:# 出现异常现象的处理代码
except 异常类名3 as 变量名:# 出现异常现象的处理代码
except Exception as 变量名:# 出现异常现象的处理代码
演示:
注意:
①通过异常类名后面的变量名可以获取到具体异常信息
②执行了某个except中的内容后,其他except中的内容将不再执行
③Exception类是所有异常类的父类,能够拦截所有的异常现象,通常设置成最后一级的捕获
- 异常对象主动抛出
异常现象可以主动抛出
语法:raise 异常类对象
eg:
注意:异常对象使用raise抛出时,通常是满足某种情况时抛出,否则将会出现程序执行到此处必定抛出异常。 - 异常处理传递
异常出现后如果没有被捕获处理,该异常将会继续向下传递,到下一次调用位置。
- 情况一:使用try嵌套继续处理
- 情况二:函数或方法调用,在任意调用位置处理
自定义异常
- 基本语法
# 自定义
class 自定义异常类名(Exception):相关语句# 触发
raise 异常类对象
案例
"""
用户登录信息校验:
要求:
用户输入用户名、密码后对信息进行校验
1.用户名长度在3-8个字符
2.用户名中只能出现英文字母和数字
3.密码长度必须是6位
4.密码必须由纯数字组成
"""
# 自定义用户名异常
class NameIsError(Exception):pass
# 自定义密码异常
class PasswordIsError(Exception):pass
# 登录检查
def check_login(name,pwd):if len(name)<3 or len(name)>8:raise NameIsError("用户名长度必须在3到8个字符之间")if not name.isalnum():raise NameIsError("用户名中只能出现英文字母和数字")if len(pwd)!=6:raise PasswordIsError("密码长度必须是6位")if not pwd.isnumeric():raise PasswordIsError("密码必须由纯数字组成")name=input("请输入用户名:")
pwd=input("请输入密码:")
try:check_login(name,pwd)
except NameIsError as a:print(str(a))
except PasswordIsError as b:print(str(b))
else:print("登录成功!")
Pyhton之异常处理相关推荐
- Pyhton基础入门:从变量到异常处理(二)
位运算 1.原码.反码和补码 2.按位运算 3.利用位运算实现快速计算 4.利用位运算实现整数集合 1.原码.反码和补码 二进制有三种不同的表示形式:原码.反码和补码,计算机内部使用补码来表示. 原码 ...
- pyhton interpreter byterun和底层`code object`的简单了解
pyhton interpreter byterun和底层code object的简单了解 文章目录 pyhton interpreter byterun和底层`code object`的简单了解 p ...
- Go语言的错误异常处理机制及其应用
一.背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err = func(xx) if err != nil {//do sth. to tac ...
- SpringBoot (二) :全局异常处理设置
说在前面 在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有 ...
- 2021年大数据常用语言Scala(三十四):scala高级用法 异常处理
目录 异常处理 捕获异常 抛出异常 异常处理 Scala中 无需在方法上声明异常 来看看下面一段代码. def main(args: Array[String]): Unit = {val i = 1 ...
- Java基础(七)--Exception异常处理
发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...
- 零基础学习python_异常处理(32-33课)
我们写完python执行的时候是不是经常会遇到报错,而且报错都是大片红字,这样给别人的感受就是你写的程序怎么老是出问题啊,这样我们还咋么混下去呢?于是乎,就有了异常处理的东东. python的try语 ...
- Spring Security 实战干货:自定义异常处理
Spring Security 实战干货:自定义异常处理 转自:https://www.cnblogs.com/felordcn/p/12142514.html 文章目录 1. 前言 2. Sprin ...
- C++ 笔记(20)— 异常处理(抛出异常、捕获异常)
异常提供了一种转移程序控制权的方式. C++ 异常处理涉及到三个关键字: try . catch . throw . throw : 当问题出现时,程序会抛出一个异常.这是通过使用 throw 关键字 ...
最新文章
- spring boot 启动不连接数据库
- Docker命令查询
- NOIP 2017 时间复杂度 (模拟)
- ElasticSearch查询返回信息根据字段排序(英文检索)
- Android 图片缩略图显示
- 拼多多就知乎不当评论致歉;谷歌员工成立首个工会;MySQL 迁移工具新版发布
- linux中 查看系统属性 与 可执行文件属性 的方法
- mysql使用命令访问数据库_mysql命令操作数据库
- 修改mysql 表的字符编码
- 我擦 以后在也不乱去听别人讲座了。。
- 查看局域网中的其他机器的IP地址
- 自动发消息到微信提醒
- 前端正则表达式汇总整理
- SSM物业管理系统毕业设计-附源码310928
- Android根据包名获取APP名称
- QQ互联 成为开发者登录后没跳转
- vnc远程控制软件中文版,4款好用的vnc远程控制软件中文版
- 【树莓派C语言开发】实验11:U型光电传感器
- java彩票机选生成
- HTML下拉菜单怎么做成横向,纯css实现横向下拉导航菜单(可做左侧类目导航)
热门文章
- TextView显示省略号问题
- 使用python中的requests爬取软科大学排名并存储在本地MySql数据库
- Vertu TI root教程_方法
- Vue-组件嵌套之——父组件向子组件传值
- LeetCode 873. 最长的斐波那契子序列的长度**(double,need triple)
- 数据结构课程设计大作业——江大公交路线查询系统
- 如何下载并安装Python
- libtool已经安装了 但是报错libtool not found, please install first
- SSH框架相关准备与入门学习
- WPBC乳腺癌数据集建模(Ⅱ)—预后诊断模型建立