Python与Go中详细的异常处理机制|面试题

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

异常处理机制主要是用于捕获和处理程序运行过程中可能发生的错误和异常情况,通过使用异常处理,可以优雅地处理错误,并采取适当的措施,而不是让程序崩溃。

Python 异常处理机制

以下是Python中常见的异常处理技术和关键字:

  1. try-except语句:使用 try-except 语句可以捕获并处理可能引发的异常。在 try 块中编写可能引发异常的代码,然后在相应的 except 块中处理异常。例如:

    try:
        # 可能引发异常的代码
        result = 10 / 0
    except ZeroDivisionError:
        # 处理 ZeroDivisionError 异常
        print("除数不能为零")
    
  2. 多个 except 块:您可以使用多个 except 块来处理不同类型的异常。这样,根据引发的具体异常类型,可以执行相应的处理逻辑。例如:

    try:
        # 可能引发异常的代码
        result = 10 / 0
    except ZeroDivisionError:
        # 处理 ZeroDivisionError 异常
        print("除数不能为零")
    except ValueError:
        # 处理 ValueError 异常
        print("无效的值")
    
  3. else 块:可以在 try-except 语句中添加 else 块,在没有引发异常时执行特定的代码块。例如:

    try:
        # 可能引发异常的代码
        result = 10 / 2
    except ZeroDivisionError:
        # 处理 ZeroDivisionError 异常
        print("除数不能为零")
    else:
        # 在没有异常时执行的代码
        print("计算结果为:", result)
    
  4. finally块:使用finally块可以确保无论是否发生异常,都会执行特定的代码块。无论是否引发异常,finally块中的代码都将被执行。例如:

    try:
        # 可能引发异常的代码
        result = 10 / 2
    except ZeroDivisionError:
        # 处理 ZeroDivisionError 异常
        print("除数不能为零")
    finally:
        # 无论是否发生异常,都会执行的代码
        print("处理完成")
    
  5. 异常类型捕获:在 except 块中,可以指定捕获特定类型的异常,并将其赋给一个变量,以便进一步处理或获取异常信息。例如:

    try:
        # 可能引发异常的代码
        result = int("abc")
    except ValueError as e:
        # 处理 ValueError 异常,并获取异常信息
        print("发生异常:", str(e))
    

Go 异常处理机制

Go语言中的异常处理机制与其他一些编程语言有所不同。Go语言鼓励使用错误值(Error Value)来处理异常情况,而不是使用传统的异常机制。

在Go中,错误值是一种特殊的类型,用于表示函数执行过程中可能出现的错误情况。函数可以返回一个错误值,以指示发生了某种异常或错误。通常,错误值的类型是error,它是一个内置的接口类型。

以下是Go语言中处理异常的常见模式和技术:

  1. 函数返回错误值:函数可以通过返回一个错误值来指示发生了异常情况。通常,函数的最后一个返回值是一个错误类型。如果函数成功执行,则错误值为nil,否则会返回一个非nil的错误值。使用函数返回的错误值,调用者可以检查错误并采取适当的处理措施。

    func doSomething() error {
         
        // ...
        if err != nil {
         
            return err // 返回错误值
        }
        // ...
        return nil // 返回 nil 表示没有错误
    }
    
  2. 错误检查:调用者可以通过对错误值进行检查来判断函数是否返回了错误。使用if语句或者:=短变量声明来检查错误值,并根据需要处理错误。

    if err := doSomething(); err != nil {
         
        // 处理错误
    }
    
  3. 自定义错误类型:在Go中,您还可以自定义错误类型来提供更丰富的错误信息和上下文。通过实现error接口的Error()方法,您可以为错误类型提供自定义的错误消息。

    type MyError struct {
         
        message string
    }
    
    func (e MyError) Error() string {
         
        return e.message
    }
    
    func doSomething() error {
         
        if somethingWrong {
         
            return MyError{
         "Something went wrong"}
        }
        return nil
    }
    
  4. panic和recover:Go语言提供了panicrecover关键字用于处理严重的错误情况。panic用于引发一个运行时异常,而recover用于捕获并恢复这个异常。但是,panicrecover通常被认为是一种应对极端情况的手段,不应该被滥用,因为它们破坏了函数的正常执行流程。

    func doSomething() {
         
        if somethingWrong {
         
            panic("Something went wrong")
        }
    }
    
    func main() {
         
        defer func() {
         
            if r := recover(); r != nil {
         
                fmt.Println("Recovered:", r)
            }
        }()
    
        doSomething()
    }
    

    以上就是 Python与Go中的异常处理机制的全部内容。

相关推荐

  1. PythonGo详细异常处理机制面试

    2024-02-03 04:46:02       49 阅读
  2. Python 异常处理

    2024-02-03 04:46:02       70 阅读
  3. Python异常处理

    2024-02-03 04:46:02       48 阅读
  4. Python异常处理

    2024-02-03 04:46:02       25 阅读
  5. Go异常处理

    2024-02-03 04:46:02       42 阅读
  6. *Python异常处理:try-except-else-finally详解

    2024-02-03 04:46:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-03 04:46:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-03 04:46:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-03 04:46:02       87 阅读
  4. Python语言-面向对象

    2024-02-03 04:46:02       96 阅读

热门阅读

  1. SouthLeetCode-打卡24年01月第5周

    2024-02-03 04:46:02       54 阅读
  2. 软件工程知识梳理0-概述

    2024-02-03 04:46:02       50 阅读
  3. 大模型系列课程学习-prompt指令快速入门

    2024-02-03 04:46:02       52 阅读
  4. Sql Server之更改跟踪功能

    2024-02-03 04:46:02       54 阅读
  5. SQL Server 函数参考手册(SQL Server 日期函数)

    2024-02-03 04:46:02       48 阅读
  6. Node Exporter开启tcp相关指标

    2024-02-03 04:46:02       50 阅读