python面向对象07/异常处理

目录

  • python面向对象07/异常处理

    • 1.异常错误分类
    • 2.什么是异常?
    • 3.异常处理
    • 4.为什么要有异常处理?
    • 5.异常处理的两种方式
      • 5.1 if判断
      • 5.2 try

python面向对象07/异常处理

1.异常错误分类

语法错误:
# if 2 > 1
#     print(222)
#
# dic = {'name'; 'alex'}
# tu = (2, 3, 4'' 6 )

逻辑错误:
# num = int(input('请输入数字'))
# dic = {'name': '海狗', 'age': 18}
# dic['hobby']

2.什么是异常?

代码发生异常之后,程序就会中断!

3.异常处理

当代码出现异常时,通过某种方式不让程序中断,合理的跳过去.

4.为什么要有异常处理?

1.用户体验良好
2.使代码更有健壮性、容错性

5.异常处理的两种方式

5.1 if判断

利用if 只能处理简单的异常,如果异常需要考虑的方面比较多,不合适

5.2 try

利用try的方式进行异常处理,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)

结构一:
    单分支
# try:
#     num = int(input('>>>'))  # 出现ValueError错误之后,直接跳转到except语句.
#     dic = {'name': '二狗'}
#     print(dic['age'])
#
#     print(111)
# except ValueError:
#     print(666)

结构二:
    多分支
# 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('没有此下标')
# print(666)

结构三:
    万能异常:处理所有Python识别的异常
    什么时候用万能,什么时候用多分支?
        如果你对错误信息不关心,只是想要排除错误,让程序继续运行
        如果你对错误信息要进行明确的分流,让你的程序多元化开发
# try:
#
#     dic = {'name': "二狗"}
#     # print(dic['age'])
#     l1 = [1, 2]
#     print(l1[100])
#     print(111)
#     for i in 123:
#         pass
#
# 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('请输入范围内的序号')

结构四:
    多分支 + 万能异常
# 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('程序出现意料之外的错误....')

结构五: try else finally
    else:如果没有出现异常,则执行else
    except:必须依赖try, else:必须依赖except和try
    finally:只是依赖于try
    finally 在异常出现之前,执行finally语句
        应用:
            1.用在关闭数据库连接,文件句柄关闭,数据保存,用到finally
              可以在finally后边用with open 将文件写进去
            2.在return结束函数,执行finally代码
# 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')
# except 必须依赖于try, else必须依赖于except和try
# finally只是依赖于try.

# finally : 在异常出现之前,执行finally语句.
# try:
#     dic = {'name': '嘉欣'}
#     print(dic['age'])
#     l1 = [1, 2]
#     print(l1[100])
# # except KeyError:
# #     print('没有此键')
# # except IndexError:
# #     print('没有此下标')
# # except IndexError:
# #     pass
# # print(111)
# finally:
#     print('finally 666')

# finally 用在 关闭数据库连接,文件句柄关闭,数据保存等,用到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())

结构六:
    主动触发异常
    raise ValueError (出现了value错误)

结构七:
    断言,展示出一种强硬的态度
    assert 条件,assert a == b
    条件不成立直接报错 AssertionError
# assert 条件
# name = 'alex'
# n1 = input('请输入:')
# assert name == n1
# print(111)
# print(222)    

结构八:
    自定义异常:
    Python中给你提供的错误类型有很多,但是不是全部的错误
    Python会报所有错误信息,但是没有错误的类型
input() 可以使用异常捕获,别的地方慎用
# class LeError(BaseException):
#
#     def __init__(self,msg):
#         self.msg=msg
#     def __str__(self):
#         return self.msg
#
# try:
#     # 三行
#     raise LeError('socket.connent.....')
# except LeError as e:  # e = LeError('类型错误')
#     print(e)

#   socket.connent .....

# EOFError
# ValueError

原文地址:https://www.cnblogs.com/liubing8/p/11347963.html

时间: 2024-11-05 16:40:24

python面向对象07/异常处理的相关文章

Python面向对象之异常处理

1:什么是异常 异常就是在我们的程序在运行过程中由于某种错误而引发Python抛出的错误: 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在         python中,错误触发的异常如下 2:常用异常 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. python标准异常 异常名称 描述 BaseException 所有异常的基类 S

Python面向对象(约束,异常处理,md5加密)(五)

1. 类的约束 1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError class Base: def login(self): raise NotImplementedError("没有实现登录") class Person(Base): def login(self): print("正常使用") class SpecialPerson(Base): def denglu(self): print("非正常"

python 面向对象和类成员和异常处理

python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial diameter),极直径(polar diameter)''' def __init__(self,name,eqDiameter,poDiameter): self.name=name self.eqDiameter=eqDiameter #赤道直径 self.poDiameter=poDiamet

Python 面向对象(下)

本篇博客承接自Python 面向对象(上) 四. 继承,实现,依赖,关联,聚合,组合 待补充 参考资料: https://www.cnblogs.com/chinxi/p/7349768.html 五. 特殊成员 待补充 参考资料: 类中的特殊成员方法 待补充 参考资料: https://www.cnblogs.com/chinxi/p/7349768.html 五. 特殊成员 待补充 参考资料: 类中的特殊成员方法 六. issubclass,type,isinstence各自的用法和区别 1

Python面向对象之反射,双下方法

一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) class Foo:    f = '

Python面向对象反射,双下方法

一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) 对实例化对象的示例 class Foo

Python 面向对象class(2)

Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们先来简单的了解下面向对象的一些基本特征. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定

python面向对象进阶

isinstance(obj,cls)检查是否obj是否是类 cls 的对象. isinstance(obj,cls)检查是否obj是否是类 cls 的对象. 反射 python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数(参数是对象,字符串格式的属性名) hasattr getattr setattr delattr __del__,就是析构方法,当对象在内存中被释放时,自动触发执行. 注:此方法一般无须定义,

Python面向对象(2)

1.除了封装,Python面向对象还有继承这一功能,如下代码,这是简单的继承功能. class Animal: def chi(self): print(self.name+' 吃') def he(self): print(self.name + ' 喝') class Cat: def __init__(self, name): self.name = name def jiao(self): print('瞄') class Dog(Animal):#继承Animal这个父类,拥有父类的方