使用Python处理专业错误
在本教程中,您将从整个系统的角度学习如何处理Python中的错误条件。错误处理是设计的关键方面,它从最低级别(有时是硬件)一直到最终用户。如果您没有一致的策略,您的系统将不可靠,用户体验将很差,您将面临很多挑战,并且要调试和故障排除。状态代码和异常。状态代码可以由任何编程语言使用。异常需要语言/运行时支持。
python支持异常。 Python及其标准图书馆使用例外情况,可以自由地报告许多特殊情况,例如IO错误,除以零,不超出界限,以及一些不太特殊的情况,例如迭代的终结(尽管隐藏了)。大多数库都遵循并提出例外。这意味着您的代码无论如何都必须处理Python和库提出的例外,因此您不妨在必要时从代码中提出异常,而不是依赖状态代码。>
快速示例>
>>
这是调用try
子句时的输出。如果没有例外,则该程序会跳过def f():<br> return 4 / 0<br>def g():<br> raise Exception("Don't call us. We'll call you")<br>def h():<br> try:<br> f()<br> except Exception as e:<br> print(e)<br> <br> try:<br> g()<br> except Exception as e:<br> print(e)<br>
>如果输入一个整数,则程序可以按预期工作。但是,如果您输入浮子或字符串,则程序将停止执行。
当您捕获异常时,您有三个选项:Please enter a number: 10.3<br>Oops! That was no valid number. Try again...<br>Please enter a number: hello<br>Oops! That was no valid number. Try again...<br>Please enter a number: 10.0<br>Oops! That was no valid number. Try again...<br>Please enter a number: <br>
- >
- 悄悄地吞下它(静静地处理并继续运行)。
>吞咽异常
import json<br>import yaml<br><br>def parse_file(filename):<br> try:<br> return json.load(open(filename))<br> except json.JSONDecodeError<br> return yaml.load(open(filename))<br>
>请注意,其他例外(例如未找到或未读取权限的文件)将传播,并且不会被特定条款捕获。在这种情况下,这是一个很好的策略,您只需要在JSON解析因JSON编码问题而失败的情况下尝试YAML解析。>如果要处理except Exception
>
<code> <code> <code> dececkion excect 。例如:<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">def f():<br> return 4 / 0<br>def g():<br> raise Exception("Don't call us. We'll call you")<br>def h():<br> try:<br> f()<br> except Exception as e:<br> print(e)<br> <br> try:<br> g()<br> except Exception as e:<br> print(e)<br></pre><div class="contentsignin">登录后复制</div></div><div class="contentsignin">登录后复制</div></div><div class="contentsignin">登录后复制</div></div><div class="contentsignin">登录后复制</div></div>><p>请注意,通过添加<code>as e
,您可以将异常对象绑定到您的名称e
>的name>。这使您可以执行一些本地处理,但仍然可以让高层处理。在这里,函数打印了控制台的异常类型,然后再次提高异常。
raise
>提出不同的异常invoke_function()
Please enter a number: 10.3<br>Oops! That was no valid number. Try again...<br>Please enter a number: hello<br>Oops! That was no valid number. Try again...<br>Please enter a number: 10.0<br>Oops! That was no valid number. Try again...<br>Please enter a number: <br>
如果
函数提出了异常,则对import json<br>import yaml<br><br>def parse_file(filename):<br> try:<br> return json.load(open(filename))<br> except json.JSONDecodeError<br> return yaml.load(open(filename))<br>
query()
close_db_connection()
> finally
的调用可能不会返回连接或提出异常本身。在这种情况下,无需关闭DB连接。
def print_exception_type(func, *args, **kwargs):<br> try:<br> return func(*args, **kwargs)<br> except Exception as e:<br> print(type(e))<br>
>,您必须注意不要在那里引起任何例外,因为它们会掩盖原始异常。open_db_connection()
>
finally
with
def invoke_function(func, *args, **kwargs):<br> try:<br> return func(*args, **kwargs)<br> except Exception as e:<br> print(type(e))<br> raise<br>
上下文管理者在清理代码中包装其他机制,即使在清理代码中均已自动执行。您使用的是process()
>语句,而不是尝试封锁。这是一个具有文件的示例:即使with
提出了例外,当退出
提出了例外,无论是否处理过例外,该文件都将立即正确关闭。它在Web应用程序中特别有用,在Web应用程序中,您可以以通用的方式对待所有异常:只需记录异常,然后将错误消息返回给呼叫者。
在记录时,记录异常类型,错误消息和stacktrace是很有用的。所有这些信息都可以通过
>对象获得,但是如果您在异常处理程序中使用方法,则Python记录系统将为您提取所有相关信息。
>这是我建议的最佳实践:
def f():<br> return 4 / 0<br>def g():<br> raise Exception("Don't call us. We'll call you")<br>def h():<br> try:<br> f()<br> except Exception as e:<br> print(e)<br> <br> try:<br> g()<br> except Exception as e:<br> print(e)<br>
>如果您遵循此模式(假设您是否正确设置记录),那么无论发生什么情况,您都会在日志中获得不错的记录,并且可以解决该问题。这是一种浪费,它可能会使您感到困惑,并让您认为同一问题的多个实例发生了多次记录的一个实例。
>>最简单的方法是让所有例外的方式让所有异常传播(除非可以自信地吞咽和吞咽),然后将其登录到您的应用程序/系统/系统的最高级别。功能。最常见的实现是使用日志文件。但是,对于具有数百,数千或更多服务器的大型分布式系统,这并不总是最好的解决方案。
跟踪整个基础架构中的异常,诸如Sentry之类的服务非常有用。它集中了所有异常报告,除了堆叠式添加每个堆栈框架的状态之外(在提高异常时变量的值)。它还提供了一个非常不错的界面,其中包含仪表板,报告和方法来通过多个项目分解消息的方法。它是开源的,因此您可以运行自己的服务器或订阅托管版本。下面是屏幕截图,是一个屏幕截图,显示Sentry如何显示Python应用程序中的错误。
>,这是文件的详细堆栈跟踪,导致错误。在问题的第一个迹象的系统中,吓坏了的系统不是很有用。

>两个可以帮助解决错误处理的装饰器的是
>,它会
,它会再次登录例外,然后再提高它,然后将其重新调用,该装饰器将重新调用功能几次。
>错误记录器
这是一个简单的实现。装饰器除了登录对象。当它装饰功能并调用函数时,它将在一个try-except子句中包装呼叫,如果有例外,它将记录下来并最终提高异常。
def f():<br> return 4 / 0<br>def g():<br> raise Exception("Don't call us. We'll call you")<br>def h():<br> try:<br> f()<br> except Exception as e:<br> print(e)<br> <br> try:<br> g()<br> except Exception as e:<br> print(e)<br>
Please enter a number: 10.3<br>Oops! That was no valid number. Try again...<br>Please enter a number: hello<br>Oops! That was no valid number. Try again...<br>Please enter a number: 10.0<br>Oops! That was no valid number. Try again...<br>Please enter a number: <br>
>
import json<br>import yaml<br><br>def parse_file(filename):<br> try:<br> return json.load(open(filename))<br> except json.JSONDecodeError<br> return yaml.load(open(filename))<br>
retier >结论错误处理对用户和开发人员都至关重要。 Python在语言和标准库中为基于异常的错误处理提供了很好的支持。通过勤奋地遵循最佳实践,您可以征服这一经常被忽视的方面。>已通过Esther Vaati的贡献进行了更新。 Esther是Envato Tuts的软件开发人员和作者。
以上是使用Python处理专业错误的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

每天学习Python两个小时是否足够?这取决于你的目标和学习方法。1)制定清晰的学习计划,2)选择合适的学习资源和方法,3)动手实践和复习巩固,可以在这段时间内逐步掌握Python的基本知识和高级功能。

Python在开发效率上优于C ,但C 在执行性能上更高。1.Python的简洁语法和丰富库提高开发效率。2.C 的编译型特性和硬件控制提升执行性能。选择时需根据项目需求权衡开发速度与执行效率。

Python和C 各有优势,选择应基于项目需求。1)Python适合快速开发和数据处理,因其简洁语法和动态类型。2)C 适用于高性能和系统编程,因其静态类型和手动内存管理。

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。

Python在科学计算中的应用包括数据分析、机器学习、数值模拟和可视化。1.Numpy提供高效的多维数组和数学函数。2.SciPy扩展Numpy功能,提供优化和线性代数工具。3.Pandas用于数据处理和分析。4.Matplotlib用于生成各种图表和可视化结果。

Python在Web开发中的关键应用包括使用Django和Flask框架、API开发、数据分析与可视化、机器学习与AI、以及性能优化。1.Django和Flask框架:Django适合快速开发复杂应用,Flask适用于小型或高度自定义项目。2.API开发:使用Flask或DjangoRESTFramework构建RESTfulAPI。3.数据分析与可视化:利用Python处理数据并通过Web界面展示。4.机器学习与AI:Python用于构建智能Web应用。5.性能优化:通过异步编程、缓存和代码优
