news 2026/6/4 17:26:31

异常处理-面向对象思想的了解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
异常处理-面向对象思想的了解

一. 异常处理

在代码的编写运行时,常常遇到错误后,代码针对错误报错并在错误出终止,为了能让代码‘一镜到底’,不因为某一功能的错误而让程序卡壳,通常可以在认为出错的地方用try-except包围起来

理解程序中的错误一般分为两种,编译错误,运行错误

异常处理是面向运行时错误的 指的是在程序的运行中代码如果出现了bug,那么它会终止后面的程序 这个时候就需要异常处理

try: # 可能出错的代码 pass except Exception as e: # 异常处理 pass else: # 无异常时执行 pass finally: # 无论是否有异常都会执行(常用于资源释放) pass

1.1 异常处理具体案例

# try:可能出现错误的代码块 try: num1 = int(input('请输入数1:')) num2 = int(input('请输入数2:')) count = num1 / num2 # 同时写多个except,属于异常处理的分级捕获 print(f'当前结果是:{int(count)}') # Exception:当前的父类异常一定要放在最末尾 except (ValueError,ZeroDivisionError ) as e: # 子异常 print(e) except Exception as e: # 异常的父类类型(捕获所有错误) print('其他异常') else: # 当程序没有出现仍和异常时,会执行代码块 print('没毛病') finally: # 应用场景:关闭数据连接,进程 线程 协程释放资源 print('释放')

1.2 异常常见的类型

  • ValueError: 值无效(如int('abc'))
  • ZeroDivisionError: 除以0的数学运算
  • KeyError: 字典中访问不存在的键
  • IndexError: 序列索引超出范围(如列表越界)
  • TypeError: 操作或函数传入不兼容的类型
  • ......

二. 面向对象的思维

2.1 面向对象与过程

什么是面向过程?

自顶向下,逐步细化!简而言之就是根据过程一步一步的往下写。
比如:如果某一个步骤功能的难度较大,可以将该步骤再次细化为若干个子步骤,以此类推,一直到结尾并得到我们想要的结果。

什么是面向对象?

将功能理解成实体,实体中有相对应的类型和属性
可以看做是一个一个的实体在发挥其各自的“功能”(能力)并在内部进行协调有序的调用过程!

2.1.1面向对象与面向过程二者的区别?

面向过程和面向对象的区别

  1. 都可以实现代码重用和模块化编程,面向对象的模块化更深,数据也更封闭和安全
  2. 面向对象的思维方式更加贴近现实生活,更容易解决⼤型的复杂的业务逻辑
  3. 从前期开发的角度来看,面向对象比面向过程要更复杂,但是从维护和扩展的⻆度来看,面向象要远比面向过程简单!
  4. 面向过程的代码执行效率比面向对象高

2.2类及类对象的简单使用

在Python中,采用类(class)来生产对象,用类来规定对象的属性和方法!也就是说,在Python
中,要想得到对象,必须先有类!

2.2.1 类的定义

具体语法结构如下

class 类名: # 属性 # 方法

案例

class QQ: def __init__(self,name,gender,age): # __init__: 构造方法(在类进行实例化的过程中,默认会调用此方法) self.name = name # 默认不写构造方法则会调用隐式构造 self.gender = gender # self:指的是当前实例对象 --->也可以将其理解为this指针 self.age = age # 构造方法:是一个特殊方法,在创建对象时调用,用于初始化对象属性 def bahavior(self): print(f'{self.name}要吃鱼了') def huashui(self): print(f'{self.name}要划水') def set(self,name): self.name = name
2.2.2 类对象的使用

类的实例化就是通过得到对象
类只是对象的一种规范,类本身基本上什么都做不了,必须利用类得到对象,这个过程就叫作类的实例化!

基本语法
对象名 = 类名()

在其他的编程语言中,类的实例化一般是通过new关键字实例化生成的,但是在Python中,我们不需要new关键字,只需要类名+()括号就代表类的实例。

具体案例

class QQ: def __init__(self,name,gender,age): # __init__: 构造方法(在类进行实例化的过程中,默认会调用此方法) self.name = name # 默认不写构造方法则会调用隐式构造 self.gender = gender # self:指的是当前实例对象 --->也可以将其理解为this指针 self.age = age # 构造方法:是一个特殊方法,在创建对象时调用,用于初始化对象属性 def bahavior(self): print(f'{self.name}要吃鱼了') def huashui(self): print(f'{self.name}要划水') def set(self,name): self.name = name qq = QQ('小牟','雄',5) # 实例化 qq.huashui() # 使用方法 qq.bahavior() print(qq.name) qq.set('小忙') print(qq.name)

三. 总结

3.1 异常处理基本概念

  • 目的:防止程序因错误而中断执行
  • 适用场景:运行时错误处理
  • 核心思想:让代码能够"一镜到底"继续执行

3.2 常见异常类型

  • ValueError:值无效转换
  • ZeroDivisionError:除零错误
  • KeyError:字典键不存在
  • IndexError:序列索引越界
  • TypeError:类型不匹配

3.3 类的定义与使用

  • 类定义:使用 class 关键字定义模板
  • 构造方法:init 方法用于初始化对象属性
  • 实例化:通过 类名() 创建对象
  • self参数:指向当前实例对象

3.4 核心要点

  • 类是对象的规范,对象是类的实例
  • 面向对象更贴近现实逻辑,适合复杂业务场景
  • 异常处理与面向对象结合使用,提高程序健壮性
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 15:11:16

蚂蚁阿福升级PC端,面向医生群体上线 DeepSearch功能

今日,蚂蚁阿福升级其 PC 端,并上线DeepSearch(深度搜索)功能打造中国版“Open Evidence”,免费为医生、医学生及基层医疗工作者等泛医学人士提供专业服务。蚂蚁阿福 PC端提供健康咨询、DeepSearch 两大专业能力&#x…

作者头像 李华
网站建设 2026/5/28 21:46:46

Unity3D 神秘卡牌游戏

基于 Unity3D 引擎开发了一款神秘主题的卡牌游戏。游戏共设有三个关卡,卡牌数量随着关卡推进逐步增加。玩家在每次操作中最多只能翻开两张卡牌:若两张卡牌图案相同,则卡牌同时消失;若不相同,则会自动翻回背面。当场景中…

作者头像 李华
网站建设 2026/5/30 14:40:51

救命神器8个AI论文网站,研究生轻松搞定毕业论文!

救命神器8个AI论文网站,研究生轻松搞定毕业论文! 论文写作的救星,AI 工具如何改变研究生的学习方式 在当今学术研究日益复杂的背景下,研究生们正面临着前所未有的挑战。从选题到开题,从撰写初稿到反复修改,…

作者头像 李华
网站建设 2026/5/29 0:13:37

导师推荐10个AI论文平台,自考毕业论文轻松搞定!

导师推荐10个AI论文平台,自考毕业论文轻松搞定! AI 工具助力论文写作,轻松应对自考挑战 在自考论文写作过程中,许多学生常常面临选题困难、结构混乱、内容重复等问题。而随着 AI 技术的不断发展,越来越多的 AI 工具开始…

作者头像 李华
网站建设 2026/5/29 0:03:56

PHP性能优化全攻略

PHP 性能优化方法 代码层面优化 避免使用过多循环和嵌套,尽量使用内置函数(如 array_map 替代 foreach)。减少全局变量和魔术方法(如 __get、__set)的使用。使用 代替 进行严格比较以减少类型转换开销。 缓存技术应…

作者头像 李华
网站建设 2026/5/28 1:05:29

FBM242-P0916JY外置开关模块

FBM242-P0916JY 外置开关模块特点概览:模块化设计:标准化接口,便于安装、扩展和替换。多通道输入:支持多路开关信号输入,实现灵活控制。工业级可靠性:耐高温、防尘、防振动,适应连续运行的工业环…

作者头像 李华