day27——面向对象的总结、异常处理
day27
面向对象的总结
异常处理
错误的分类
- 语法错误
if
if 2>1
	print(222)
dic = {"name"; "alex"}
- 逻辑错误
num = int(input("请输入数字"))
dic = {"name": "海狗", "age": 18}
dic["hobby"]
什么是异常?
代码发生异常错误之后,你的程序就中断了
异常处理?
当代码出现异常时,我通过某种方式不让你的程序中断,合理的“跳”过去,异常处理
为什么要有异常处理?
- 用户体验良好
- 使你的代码更有健壮性,容错性
异常处理的两种方式
- 利用if只能处理简单的异常,如果异常需要考虑的方面比较多,不适合
- 利用try的方式进行异常处理
try的尝试
try:
    num = int(input("请输入序号"))  # 出现ValueError错误之后,直接跳转到except语句
    print(111)
except ValueError:
    print(666)
try:
    dic = {"name": "嘉欣"}
    print(dic["age"])
    num = int(input("请输入序号"))  # 出现ValueError错误之后,直接跳转到except语句
    print(111)
except ValueError:
    print(666)   # 报错
结构1:单分支
try:
    num = int(input("请输入序号"))  # 出现ValueError错误之后,直接跳转到except语句
    dic = {"name": "嘉欣"}
    print(dic["age"])
    print(111)
except ValueError:
    print(666)
结构2:多分支
try:
    num = int(input("请输入序号"))  # 出现ValueError错误之后,直接跳转到except语句
    dic = {"name": "嘉欣"}
    print(dic["age"])
    l1 = [1,2]
    print(l1[100])
    print(111)
except ValueError:
    print("输入的有非数字元素")
except KeyError:
    print("没有此键")
except IndexError:
    print("没有此下表")
结构3:万能异常
万能异常:处理所有python识别的异常
try:
    dic = {"name": "嘉欣"}
    print(dic["age"])
    l1 = [1,2]
    print(l1[100])
    print(111)
except Exception as e:
    print(e)
print(666)
什么时候用万能异常?
如果你对错误信息不关心,只是想要派出错误让程序继续运行,用万能异常
什么时候用多分支?
如果你对错误信息要进行明确的分流,让你的程序多元化开发,则使用多分支
# 之前的写法:
# num = input("输入序号")
# if num.isdecimal():
#     num = int(num)
#     if 0 < num < 5:
#         if num == 1:
#             pass   # func()
# else:
#     print("请输入数字")
def func():
    pass
def func1():
    pass
dic = {
    1: func,
    2: func1
}
try:
    num = int(input("请输入序号"))
    dic[num]()
except ValueError:
    print("请输入数字")
except KeyError:
    print("请输入范围内的序号")
结构4:多分支+万能异常
def func():
    pass
def func1():
    pass
dic = {
    1: func,
    2: func1
}
try:
    num = int(input("请输入序号"))
    dic[num]()
except ValueError:
    print("请输入数字")
except KeyError:
    print("请输入范围内的序号")
except Exception:
    print("程序出现意料之外的错误...")
结构5: try else finally
except 必须依赖于try,else必须依赖于except和try
finally只是依赖于try
try:
    dic = {"name": "嘉欣"}
    print(dic["age"])
    l1 = [1,2]
    print(l1[100])
    print(111)
except KeyError:
    print("没有此键")
except IndexError:
    print("没有此下标")
else:
    print("如果没有出现异常则执行这里")
finally:
    print("finally 666")
- finally:在异常出现之前,执行finally语句
try:
    dic = {'name': '嘉欣'}
    print(dic['age'])
    l1 = [1, 2]
    print(l1[100])
# except KeyError:
#     print('没有此键')
# except IndexError:
#     print('没有此下标')
# except IndexError:
#     pass
finally:
    print('finally 666')
- finally用途
用在 关闭数据库链接,文件句柄关闭,数据保存等
# with open('test1',encoding='utf-8',mode='r+') as f1:
#     try:
#         for i in f1:
#             print(i)
#         if ....:
#     finally:
#
#         f1.close()
# 在return结束函数之前,执行finally代码.
# def func():
#     try:
#         print(111)
#         return 666
#     finally:
#         print(222)
# print(func())
结构6:主动触发异常
raise ValueError("出现了value错误")
结构7
断言:展现出一种强硬的态度
# assert 条件
name = "alex"
n1 = input("请输入:")
assert name == n1
print(111)
print(222)
结构8:自定义异常
python中给你提供的错误类型很多,但不是全部的错误
class LiYeError(BaseException):
    def __init__(self, msg):
        self.msg = msg
    def __str__(self):
        return self.msg
try:
    # 三行
    raise LiYeError('socket.connent.....')
except LiYeError as e: # e = LiYeError("类型错误)
    print(e)
day27——面向对象的总结、异常处理的更多相关文章
- 简学Python第六章__class面向对象编程与异常处理
		Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群 群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性p ... 
- day27 面向对象
		day27 面向对象 目录 day27 面向对象 一.面相对象介绍 1 什么是对象 2 类于对象 二.实现面向对象编程 1 先定义类 2 属性访问 2.1 调用dict方法 2.2 类.属性 3 调用 ... 
- Python面向对象补充以及异常处理
		面向对象相关内容 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() isinstance(o ... 
- Python3基础(6)面向对象编程、异常处理
		---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ... 
- python面向对象其他相关-异常处理-反射
		1.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 2.issubclass(sub, super) 检查sub类是否是 super 类的派生类 n1 = 10 ... 
- python 面向对象(五)约束 异常处理 MD5 日志处理
		###############################总结###################### 1.异常处理 raise:抛出异常 try: 可能出现错误代码 execpt 异常类 a ... 
- day 018 面向对象--约束和异常处理
		---恢复内容开始--- 主要内容; 类的约束 异常处理 自定义异常 MD5加密 日志 一 类的约束 (约束是对类的约束,) 看个例子: 这是领导分配给每个人的项目,要求每人写个功能 结果如下: 例 ... 
- 第八章:Python基础の面向对象(二)
		本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ... 
- C错误异常处理,异常处理
		预处理器标识#error的目的是什么啊? 指令 用途 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编 ... 
随机推荐
- 【批处理】if命令,注释方式
			If 命令 if 表示将判断是否符合规定的条件,从而决定执行不同的命令. 有三种格式:1.if "参数" == "字符串" 待执行的命令参数如果等于指定的字符串 ... 
- java 数据库迁移工具 flyway
			官方 https://github.com/flyway/flyway 简易demo https://github.com/deadzq/flyway-demo 主要在配置文件上做改动 
- 解决js加减乘除精度问题
			// 加法 const accAdd = (arg1, arg2) => { var r1, r2, m; try { r1 = arg1.toString(). ... 
- 【18NOIP普及组】对称二叉树(信息学奥赛一本通 1981)(洛谷 5018)
			[题目描述] 一棵有点权的有根树如果满足以下条件,则被轩轩称为对称二叉树: 1.二叉树: 2.将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等. 下图中节点内的数字为权值,节点外 ... 
- nginx 平滑重启的实现方法
			一.背景 在服务器开发过程中,难免需要重启服务加载新的代码或配置,如果能够保证server重启的过程中服务不间断,那重启对于业务的影响可以降为0.最近调研了一下nginx平滑重启,觉得很有意思,记录下 ... 
- 下载根目录下的pdf文件, 浏览器下载
			public void outPut(HttpServletRequest request, HttpServletResponse response, Integer type) { ClassPa ... 
- Scala函数柯里化(Currying or Curry)
			柯里化(Currying) 把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术. 简单的实现如下: scala> def ... 
- 第09组 Beta冲刺(2/4)
			队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ... 
- 执行buildman --fetch-arch arm提示"urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>"如何处理?
			答: 在uboot源码的tools/buildman/toolchain.py中取消证书验证,修改内容如下: diff --git a/tools/buildman/toolchain.py b/to ... 
- t4模版快速入门
			语法 主要包括指令.文本块.控制块. 1.指令 指令主要包括template, output, assembly, import, include等类型,用以告诉T4引擎如何编译和运行一个模板.这些指 ... 
