杭州网站前端建设,it运维服务内容,图书馆网站建设的作用,怎么制作小网站 不用域名的《前端的 Python 入门指南》系列文章#xff1a;
#xff08;一#xff09;#xff1a;常用语法和关键字对比#xff08;二#xff09;#xff1a;函数的定义、参数、作用域对比#xff08;三#xff09;#xff1a;数据类型对比 - 彻底的一切皆对象实现和包装对象异…《前端的 Python 入门指南》系列文章
一常用语法和关键字对比二函数的定义、参数、作用域对比三数据类型对比 - 彻底的一切皆对象实现和包装对象异同四参数传递方式对比 - 值与引用传递 vs 可变不可变数据五面向对象特性之继承实现的方式对比 - 基于原型链和基于类各有什么优缺点六调试方式和技巧对比七异步场景的实现方案对比 - 内置显示事件循环 asyncawait八多线程编程与实现方法对比九模块化的实现、使用及注意事项对比十常用的全局变量和接口介绍
在编程中错误和异常是不可避免的。无论是语法错误、运行时错误还是逻辑错误都可能在程序的执行过程中出现。如何有效地处理这些错误是每个开发者必须掌握的技能。特别是在 Python 中异常处理的机制与JavaScript有所不同理解其工作原理和最佳实践能够帮助你编写更健壮和易维护的代码。
在本文中我们将深入探讨 Python 中的错误和异常处理机制并通过对比 Python 和 JavaScript 中的异常处理方式帮助大家更好地理解 Python 异常处理的策略和最佳实践。 另外写给前端的python入门暂时完结我将继续写《写给pythonier的前端进阶指南》因为关注的python用户多一些掌握多一点能够做更有趣的事情。尤其python做后端js做前端是很不错的当学好了前端就可以做出炫酷的页面、让更多业务跑在前端或者合适的时机使用合适的方案而不是一把梭哈后患无穷 稍微推荐下最新文章 GRU实战教程 - 文本情感分析之有害内容检测
一、什么是错误与异常
错误Error通常指的是在程序运行过程中导致程序无法继续执行的情况常常是由编译错误、语法错误等引起的。异常Exception是程序运行过程中出现的意外情况但与错误不同异常通常不会立刻导致程序崩溃。它可以被捕获和处理从而避免程序中断。
Python 提供了完善的异常处理机制允许程序在发生异常时进行自定义处理。通过异常处理机制开发者可以有效地管理程序中的错误和异常使程序更加健壮。 实际上编程中有两种学派一种是已知错误不算错误派一种是错误即错误派。前者会采用如下的行为例如传入的参数不合法不会抛出错误而是一个包含success(类似的 error 的组合对象让上层处理。后者会直接抛出错误。各有优缺点其实错误最大的缺点可能是会影响性能但我个人是站队后者的因为可阅读性和一致性往往比那一丢丢的性能好。 二、Python 中的异常处理机制
在 Python 中异常是通过 try、except、else 和 finally 语句来处理的。其基本结构如下
try:# 可能引发异常的代码pass
except ExceptionType as e:# 异常处理代码pass
else:# 如果没有异常发生则执行的代码pass
finally:# 无论是否发生异常都会执行的代码pass在js中没有else , except则是catch。js中异常会导致中断所以后续代码可以写在一个try里面 2.1 try 块
try 块中的代码是可能引发异常的代码。如果在 try 块中发生异常Python 会跳过后续的代码并转到 except 块。
2.2 except 块
except 块用于捕获并处理异常。你可以捕获特定类型的异常也可以捕获所有异常。捕获到异常后你可以进行相应的处理或是打印错误信息甚至重新抛出异常。
try:x 1 / 0
except ZeroDivisionError:print(Cannot divide by zero!)2.3 else 块
else 块是可选的只有在 try 块中的代码没有引发任何异常时else 块中的代码才会执行。
try:x 10
except ZeroDivisionError:print(Error)
else:print(No error occurred!)2.4 finally 块
finally 块用于定义无论是否发生异常都需要执行的代码通常用于释放资源或清理操作。finally 块中的代码总会执行即使在 try 或 except 块中有 return 语句。
try:x 10 / 2
finally:print(This will always execute.)三、Python 异常类层次结构
Python 中的异常是一个类层次结构所有异常类都继承自基类 BaseException。其中最常用的异常类包括
Exception所有标准异常的基类通常用于捕获常见的异常类型。ValueError表示传入函数的参数类型正确但值不合适时抛出的异常。TypeError表示类型不匹配时抛出的异常。IndexError表示索引超出范围时抛出的异常。KeyError表示字典查找键时发生的异常。FileNotFoundError表示文件未找到时抛出的异常。
try:x int(string)
except ValueError as e:print(fCaught ValueError: {e})这里有点模式匹配的味道js则是全无类型。是throw后面的值有时候甚至只是一个错误字符串而不是错误对象我个人也经常直接抛出字符串 — 因为不用捕获堆栈心理认为对性能影响小而且起到中断的作用 四、Python 异常处理的最佳实践
4.1 捕获特定异常
尽量避免使用 except Exception: 来捕获所有异常因为它会捕获所有类型的异常包括系统异常和程序内部的错误。更好的做法是捕获特定的异常类型这样可以对不同类型的异常做出相应的处理。
try:x int(string)
except ValueError as e:print(fValueError occurred: {e})
except TypeError as e:print(fTypeError occurred: {e})4.2 避免空的 except 块
不要使用空的 except 块这样会吞掉所有的异常使得调试变得困难。至少要记录异常信息或者在 except 块中添加处理逻辑。
try:x int(string)
except ValueError as e:print(fAn error occurred: {e})# 可以选择记录错误日志4.3 使用 else 和 finally
else 和 finally 使代码更加清晰和健壮。特别是在涉及资源管理时finally 可以帮助我们确保资源的释放。
try:file open(file.txt, r)data file.read()
except FileNotFoundError as e:print(fFile not found: {e})
else:print(File read successfully)
finally:file.close() # 无论是否发生异常都关闭文件4.4 使用自定义异常
对于复杂的业务逻辑往往需要定义自己的异常类型。Python 允许你通过继承 Exception 类来创建自定义异常类。这样可以更明确地表示特定的错误类型并提供更具体的错误信息。
class CustomError(Exception):def __init__(self, message):self.message messagesuper().__init__(self.message)try:raise CustomError(Something went wrong!)
except CustomError as e:print(fCaught custom error: {e})4.5 异常链
有时我们希望在处理异常时能够保留原始异常的信息Python 提供了异常链Exception Chaining机制可以通过 from 关键字将原始异常与新异常关联。
try:x 1 / 0
except ZeroDivisionError as e:raise ValueError(Custom error occurred) from e这种机制能够提供更清晰的错误堆栈信息帮助调试人员理解错误的发生过程。
五、与 JavaScript 异常处理的对比
JavaScript 和 Python 都支持异常处理但它们的语法和处理方式有所不同。以下是两者的对比
特性PythonJavaScript基本结构try / except / else / finallytry / catch / finally异常类型异常是类Exception 是基类支持自定义异常异常是对象Error 是基类支持自定义错误捕获所有异常使用 except Exception: 来捕获所有异常使用 catch (error) 来捕获所有异常异常链raise ... from 语法支持异常链throw new Error(message) 不支持链式异常资源清理finally 块确保资源清理finally 块确保资源清理
JavaScript 示例
try {let x 1 / 0;
} catch (e) {console.error(Caught an error:, e);
} finally {console.log(This will always execute.);
}Python 示例
try:x 1 / 0
except ZeroDivisionError as e:print(fCaught an error: {e})
finally:print(This will always execute.)六、总结
异常处理是编程中非常重要的一部分它帮助我们捕捉和处理意外情况从而避免程序崩溃。Python 提供了灵活且强大的异常处理机制通过合理使用 try、except、else 和 finally 块能够使代码更加健壮、易于维护。
在处理异常时应该尽量捕获特定的异常类型避免使用空的 except 块必要时创建自定义异常类并合理利用 finally 进行资源清理。通过这些最佳实践你可以编写出更加稳定和可靠的 Python 程序。 系列终于结束了其实在某个阅读不到1000时候我就打算放弃的毕竟虽然不是100%原创但一边写一边学习也是好的。后续我还是希望能够生动一点不这么死板但那得是技术熟练之后。 相信看完这个系列的十一篇章阅读python代码肯定不成问题修改下也可以。具体的实战后续我会出一些