Pyhton之异常处理

  • 异常处理
  • 自定义异常
  • 案例

异常处理

  1. 概念
    异常是程序执行过程中出现的非正常流程现象。
    异常是无法避免的,只能先预估出可能出现的异常现象,并提供对应的处理机制,在异常出现后保障程序不被中断执行。
  2. 基本语法
# 格式一:
try:# 可能引发异常现象的代码
except:# 出现异常现象的处理代码# 格式二:
try:# 可能引发异常现象的代码
finally:# try代码块结束后运行的代码# 格式三:
try:# 可能引发异常现象的代码
except:# 出现异常现象的处理代码
else:# 未出现异常现象的处理代码
finally:# try代码块结束后运行的代码

各代码块功能详细说明:

代码块名称 作用 说明
try 包裹可能引发异常的代码 被包裹的代码可能出现异常也可能不出现异常
except 对出现的异常进行处理 异常处理代码块可以有多个,根据不同种类的异常定义不同的处理方案
else 未出现异常的代码 当try代码块中没有出现异常时,try中代码执行完毕执行else中的代码
finally 异常处理机制结束执行代码 无论try代码块中是否出现异常现象,都将执行finally代码块中的内容
  1. 异常精细化处理
    异常处理可以根据不同种类的异常进行不同的处理方案设计,使用异常名称来进行区分。标准格式如下:
except 异常类名1 as 变量名:# 出现异常现象的处理代码
except 异常类名2 as 变量名:# 出现异常现象的处理代码
except 异常类名3 as 变量名:# 出现异常现象的处理代码
except Exception as 变量名:# 出现异常现象的处理代码

演示:

注意:
①通过异常类名后面的变量名可以获取到具体异常信息

②执行了某个except中的内容后,其他except中的内容将不再执行
③Exception类是所有异常类的父类,能够拦截所有的异常现象,通常设置成最后一级的捕获

  1. 异常对象主动抛出
    异常现象可以主动抛出
    语法:raise 异常类对象
    eg:

    注意:异常对象使用raise抛出时,通常是满足某种情况时抛出,否则将会出现程序执行到此处必定抛出异常。
  2. 异常处理传递
    异常出现后如果没有被捕获处理,该异常将会继续向下传递,到下一次调用位置。
  • 情况一:使用try嵌套继续处理
  • 情况二:函数或方法调用,在任意调用位置处理

自定义异常

  1. 基本语法
# 自定义
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之异常处理相关推荐

  1. Pyhton基础入门:从变量到异常处理(二)

    位运算 1.原码.反码和补码 2.按位运算 3.利用位运算实现快速计算 4.利用位运算实现整数集合 1.原码.反码和补码 二进制有三种不同的表示形式:原码.反码和补码,计算机内部使用补码来表示. 原码 ...

  2. pyhton interpreter byterun和底层`code object`的简单了解

    pyhton interpreter byterun和底层code object的简单了解 文章目录 pyhton interpreter byterun和底层`code object`的简单了解 p ...

  3. Go语言的错误异常处理机制及其应用

    一.背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err = func(xx) if err != nil {//do sth. to tac ...

  4. SpringBoot (二) :全局异常处理设置

    说在前面 在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有 ...

  5. 2021年大数据常用语言Scala(三十四):scala高级用法 异常处理

    目录 异常处理 捕获异常 抛出异常 异常处理 Scala中 无需在方法上声明异常 来看看下面一段代码. def main(args: Array[String]): Unit = {val i = 1 ...

  6. Java基础(七)--Exception异常处理

    发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...

  7. 零基础学习python_异常处理(32-33课)

    我们写完python执行的时候是不是经常会遇到报错,而且报错都是大片红字,这样给别人的感受就是你写的程序怎么老是出问题啊,这样我们还咋么混下去呢?于是乎,就有了异常处理的东东. python的try语 ...

  8. Spring Security 实战干货:自定义异常处理

    Spring Security 实战干货:自定义异常处理 转自:https://www.cnblogs.com/felordcn/p/12142514.html 文章目录 1. 前言 2. Sprin ...

  9. C++ 笔记(20)— 异常处理(抛出异常、捕获异常)

    异常提供了一种转移程序控制权的方式. C++ 异常处理涉及到三个关键字: try . catch . throw . throw : 当问题出现时,程序会抛出一个异常.这是通过使用 throw 关键字 ...

最新文章

  1. spring boot 启动不连接数据库
  2. Docker命令查询
  3. NOIP 2017 时间复杂度 (模拟)
  4. ElasticSearch查询返回信息根据字段排序(英文检索)
  5. Android 图片缩略图显示
  6. 拼多多就知乎不当评论致歉;谷歌员工成立首个工会;MySQL 迁移工具新版发布
  7. linux中 查看系统属性 与 可执行文件属性 的方法
  8. mysql使用命令访问数据库_mysql命令操作数据库
  9. 修改mysql 表的字符编码
  10. 我擦 以后在也不乱去听别人讲座了。。
  11. 查看局域网中的其他机器的IP地址
  12. 自动发消息到微信提醒
  13. 前端正则表达式汇总整理
  14. SSM物业管理系统毕业设计-附源码310928
  15. Android根据包名获取APP名称
  16. QQ互联 成为开发者登录后没跳转
  17. vnc远程控制软件中文版,4款好用的vnc远程控制软件中文版
  18. 【树莓派C语言开发】实验11:U型光电传感器
  19. java彩票机选生成
  20. HTML下拉菜单怎么做成横向,纯css实现横向下拉导航菜单(可做左侧类目导航)

热门文章

  1. TextView显示省略号问题
  2. 使用python中的requests爬取软科大学排名并存储在本地MySql数据库
  3. Vertu TI root教程_方法
  4. Vue-组件嵌套之——父组件向子组件传值
  5. LeetCode 873. 最长的斐波那契子序列的长度**(double,need triple)
  6. 数据结构课程设计大作业——江大公交路线查询系统
  7. 如何下载并安装Python
  8. libtool已经安装了 但是报错libtool not found, please install first
  9. SSH框架相关准备与入门学习
  10. WPBC乳腺癌数据集建模(Ⅱ)—预后诊断模型建立