首页 > 编程语言 >python 函数方法try 用法 案例

python 函数方法try 用法 案例

时间:2024-12-20 16:11:04浏览次数:4  
标签:divide python 用法 try zero file print 异常

在Python中,try语句用于捕获和处理在代码块执行过程中可能发生的异常。try语句后面通常会跟着一个或多个except子句来指定不同类型的异常处理逻辑,以及一个可选的else子句来指定如果没有异常发生时要执行的代码,还有一个可选的finally子句来指定无论是否发生异常都要执行的清理代码。

下面是一些try语句在函数方法中的用法案例:

案例 1: 基本异常处理

def divide_numbers(x, y):
    try:
        result = x / y
    except ZeroDivisionError:
        print("Error: Cannot divide by zero.")
    else:
        print(f"Result: {result}")
    finally:
        print("Execution of try block is finished.")

# 使用示例
divide_numbers(10, 2)  # 输出: Result: 5.0 和 Execution of try block is finished.
divide_numbers(10, 0)  # 输出: Error: Cannot divide by zero. 和 Execution of try block is finished.

案例 2: 捕获多个异常类型

def read_file(filename):
    try:
        with open(filename, 'r') as file:
            data = file.read()
    except (FileNotFoundError, IOError) as e:
        print(f"Error reading file: {e}")
    else:
        print(f"File content: {data[:10]}...")  # 仅打印文件的前10个字符作为示例

# 使用示例
read_file('existent_file.txt')  # 假设这个文件存在
read_file('non_existent_file.txt')  # 假设这个文件不存在

案例 3: 获取异常信息

def risky_operation():
    try:
        # 这里可以是一些可能会引发异常的代码
        return 1 / 0
    except ZeroDivisionError as e:
        # 捕获异常并打印异常信息
        print(f"Caught an exception: {e}")

# 使用示例
risky_operation()  # 输出: Caught an exception: division by zero

案例 4: 重新引发异常

def safe_divide(x, y):
    try:
        result = x / y
    except ZeroDivisionError:
        print("Division by zero detected.")
        # 可以选择重新引发异常,让调用者知道发生了错误
        # raise  # 这将重新引发原始的ZeroDivisionError
        # 或者,可以引发一个新的异常类型,但最好提供足够的上下文信息
        raise ValueError("Cannot divide by zero in safe_divide function.") from None  # Python 3.3+

# 使用示例(注意:由于重新引发了异常,下面的代码将不会打印else块的内容)
try:
    result = safe_divide(10, 0)
except Exception as e:
    print(f"An error occurred: {e}")
else:
    print(f"Result: {result}")
# 输出: Division by zero detected.
#       An error occurred: Cannot divide by zero in safe_divide function.

注意:在案例4中,虽然raise语句被用来重新引发异常,但使用from None会丢失原始异常的堆栈跟踪。通常,如果你想要保留原始异常的堆栈跟踪,你应该在raise语句中指定原始异常,如raise ValueError(...) from e,其中e是捕获到的原始异常对象。然而,在这个特定的例子中,由于我们想要完全改变异常的类型和消息,并且不想保留原始的ZeroDivisionError堆栈跟踪作为新ValueError的一部分,所以我们使用了from None(尽管这不是最佳实践,因为它丢失了有关异常起源的有用信息)。在实际应用中,你应该仔细考虑是否确实需要改变异常类型,并确保提供足够的上下文信息来帮助调试和错误处理。

标签:divide,python,用法,try,zero,file,print,异常
From: https://www.cnblogs.com/wyj497022944/p/18619475

相关文章

  • python 中try多异常处理
    在Python中,异常处理是通过try、except、else和finally这几个关键字来实现的。下面是一个详细的异常处理例子,它涵盖了这些关键字的用法:defdivide_numbers(a,b):"""这个函数尝试将两个数相除,并处理可能出现的异常。参数:a(intorfloat):被除数b......
  • 实现Python将csv数据导入到Neo4j
    目录一、获取数据集1.1获取数据集1.2以“记事本”方式打开文件​编辑1.3 另存为“UTF-8”格式文件1.4选择“是”二、打开Neo4j并运行2.1创建新的Neo4j数据库2.2分别设置数据库名和密码​编辑 2.3启动Neo4j数据库2.4打开Neo4j数据库 2.5运行查看该数据......
  • WPF GeometryDrawing
    <Windowx:Class="WpfApp76.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • python可以在命令行上运行的小工具模块
    以下是Python可以在命令行上运行的一些小工具模块,以及它们的用途和用法示例。这些模块大多属于Python的标准库,因此无需额外安装即可使用。模块用途用法示例http.server启动一个简单的Web服务器,用于共享文件或提供简单的Web服务python-mhttp.server在默认端口8000......
  • python 装饰器@property 用法及案例增删改查
    在Python中,@property装饰器允许你将类的方法当作属性来访问,从而实现属性的封装和验证。对于增删改查(CRUD)操作,你可以结合@property、@<属性名>.setter和@<属性名>.deleter装饰器来定义相应的方法。下面是一个完整的例子,展示了如何使用这些装饰器来实现一个简单的CRUD接口:classPe......
  • 基于yolov8的小麦麦穗检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源
       更多目标检测、图像分类识别、目标追踪等项目可看我主页其他文章功能演示:基于yolov8的小麦麦穗检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili(一)简介基于yolov8的小麦麦穗检测系统在pytorch框架下实现的,这是一个完整的项目,包括......
  • python 计时装饰器@timer 用法及案例
    在Python中,装饰器(decorator)是一种高级功能,它允许你在不修改原有函数或方法定义的情况下,为其添加额外的功能。计时装饰器(@timer)是一个常见的例子,用于测量函数或方法的执行时间。下面是一个简单的计时装饰器的实现及其用法案例:计时装饰器实现importtimefromfunctoolsimportw......
  • python 日志装饰器@logexecution 用法及案例
    在Python中,日志装饰器(@logexecution)是一种用于在函数或方法执行前后自动记录日志的装饰器。这种装饰器对于调试、监控和审计代码执行非常有用。下面是一个简单的日志装饰器的实现及其用法案例:日志装饰器实现importloggingimportfunctools#配置日志记录器(可选,但通常建议这......
  • python 重试装饰器@retryonexception 用法及案例
    在Python中,重试装饰器(@retryonexception)是一种用于在函数或方法执行过程中遇到异常时自动重试的装饰器。这种装饰器对于处理可能由于临时问题(如网络延迟、资源争用等)而失败的操作非常有用。下面是一个简单的重试装饰器的实现及其用法案例:重试装饰器实现importtimeimportfunct......
  • python类中 __开头的函数【魔法方法】
    在Python中,魔法方法(MagicMethods)或双下划线方法(DunderMethods)是一类特殊的方法,它们以双下划线(__)开头和结尾。这些方法为对象提供了丰富的功能,允许你定义对象的内置操作行为,如初始化、比较、表示、数学运算等。以下是一些常见的魔法方法及其用途,并附有相应的示例代码。1.初始......