返回顶部
首页 > 资讯 > 后端开发 > GO >GO语言中err接口及defer延迟异常处理分析
  • 901
分享到

GO语言中err接口及defer延迟异常处理分析

2024-04-02 19:04:59 901人浏览 安东尼
摘要

目录err接口panic函数defer延迟defer与匿名函数结合使用recover防止程序中断err接口 Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内

err接口

Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型,该接口的定义如下:

type error interface {
    Error() string
}

调用对应接口

	err:=errors.New("this is nORMal err")
	fmt.Println(err.Error())
	err2:=fmt.Errorf("this is normal err")
	fmt.Println(err2)

案例:除数b为0时

package main
import (
	"errors"
	"fmt"
)
func main() {
	//接收错误信息和正确信息
	result,err := test(5,0)
	//加了判断,如果没有错误err=nil
	if err!=nil{
		fmt.Println(err)
	}else {
		fmt.Println(result)
	}
}
//b为0时抛出异常
func test(a,b int) (result int, err error) {  //返回错误信息
	err = nil
	if b==0{
		err =errors.New("b不能为0")
	}else {
		result = a/b
	}
	return
}

panic函数

error返回的是一般性的错误,但是panic函数返回的是让程序崩溃的错误。

一般而言,当panic异常发生时,程序会中断运行。

所以,我们在实际的开发过程中并不会直接调用panic( )函数,但是当我们编程的程序遇到致命错误时,系统会自动调用该函数来终止整个程序的运行,也就是系统内置了panic函数。

案例

package main
import "fmt"
func main() {
	test1()
	test2()
	test3()

}
func test1()  {
	fmt.Println("test1")
}
func test2()  {
	panic("panic test2")  //程序中断
}
func test3()  {
	fmt.Println("test3")
}

结果:

test1
panic: panic test2
goroutine 1 [running]:
main.test2(...)

defer延迟

总结

关键字 defer⽤于延迟一个函数的执行,调用了,但是没有执行,也会完成参数的传递

defer fmt.Println("333")
defer fmt.Println("222")
defer fmt.Println("111")

依次输出顺序:111,222,333

如果一个函数中有多个defer语句,它们会以后进先出的顺序执行。
注意,defer语句只能出现在函数的内部。

defer与匿名函数结合使用

案例1:无参数

package main
import "fmt"
func main() {
	a := 10
	b := 20
	defer func() {
		fmt.Println("匿名函数a", a)
		fmt.Println("匿名函数b", b)
	}()
	a = 100
	b = 200
	fmt.Println("main函数a", a)
	fmt.Println("main函数b", b)
}

结果:

main函数a 100
main函数b 200
匿名函数a 100
匿名函数b 200

案例二:有参数

package main
import "fmt"
func main() {
	a := 10
	b := 20
  //调用了,也传参数了,但是没有执行
	defer func(a,b int) { //添加参数
		fmt.Println("匿名函数a", a)
		fmt.Println("匿名函数b", b)
	}(a,b)  //传参数
	a = 100
	b = 200
	fmt.Println("main函数a", a)
	fmt.Println("main函数b", b)
}

结果:

main函数a 100
main函数b 200
匿名函数a 10
匿名函数b 20

recover防止程序中断

运行时panic异常一旦被引发就会导致程序崩溃。这当然不是我们愿意看到的,因为谁也不能保证程序不会发生任何运行时错误。

Go语言为我们提供了专用于“拦截”运行时panic的内建函数——recover。它可以是当前的程序从运行时panic的状态中恢复并重新获得流程控制权。

注意:recover只有在defer调用的函数中有效。

func testA()  {
    fmt.Println("testA")
}
func testB(x int)  {
    //设置recover()
    //在defer调用的函数中使用recover()
    defer func() {
        //防止程序崩溃
        //recover()
        //fmt.Println(recover())
				//加了一层判断
        if err:=recover();err!=nil {
            fmt.Println(err)
        }
    }()  //匿名函数
    var a [3]int
    a[x] = 999
}
func testC()  {
    fmt.Println("testC")
}
func main() {
    testA()
    testB(0)  //发生异常 中断程序
    testC()
}

以上就是GO语言中err接口及defer延迟异常处理分析的详细内容,更多关于GO语言err接口defer延迟异常的资料请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: GO语言中err接口及defer延迟异常处理分析

本文链接: https://lsjlt.com/news/146047.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • GO语言中err接口及defer延迟异常处理分析
    目录err接口panic函数defer延迟defer与匿名函数结合使用recover防止程序中断err接口 Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内...
    99+
    2024-04-02
  • GO语言中err接口及defer延迟异常怎么处理
    这篇“GO语言中err接口及defer延迟异常怎么处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“GO语言中err接口及d...
    99+
    2023-06-30
  • Go语言异常处理的示例分析
    这篇文章主要为大家展示了“Go语言异常处理的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Go语言异常处理的示例分析”这篇文章吧。异常处理程序运行时,发生的不被期望的事件,它阻止了程序按...
    99+
    2023-06-20
  • Go语言异常处理案例解析
    异常处理 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常 golang中提供了两种处理异常的方式 一种...
    99+
    2024-04-02
  • Go 语言中如何处理重定向响应接口的异常情况?
    在使用 Go 语言编写网络应用时,我们经常需要与外部服务进行通信。在处理这些网络请求时,我们经常会遇到重定向响应。重定向响应是指当我们向某个 URL 发送请求时,服务端返回的响应代码为 3XX,此时我们需要根据响应头中的 Location...
    99+
    2023-07-26
    重定向 响应 接口
  • 如何处理Go语言中的异常处理问题?
    如何处理Go语言中的异常处理问题?Go语言是一种由谷歌开发的编程语言,它以其简洁、高效、并发安全的特点受到了广泛的关注和应用。在日常的开发工作中,异常处理是一个不可避免的问题。本文将介绍一些在Go语言中处理异常的方法,并提供具体的代码示例。...
    99+
    2023-10-22
    Go语言 异常处理 问题处理
  • C语言异常处理机制实例分析
    本篇内容主要讲解“C语言异常处理机制实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言异常处理机制实例分析”吧!异常处理机制:setjmp()函数与l...
    99+
    2024-04-02
  • C语言异常处理机制的示例分析
    这篇文章将为大家详细讲解有关C语言异常处理机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。异常处理机制:setjmp()函数与longjmp()函数  C标准库提供两个特殊的函数:setjmp...
    99+
    2023-06-20
  • Go语言Websocket开发实践:如何处理异常关闭连接
    Go语言Websocket开发实践:如何处理异常关闭连接引言:在Web开发中,使用Websocket协议可以实现双向通信,通常用于实时数据传输、聊天应用等场景。然而,在使用Websocket时,很容易遇到连接意外中断的情况,例如网络波动、客...
    99+
    2023-12-14
    Go语言 websocket 异常处理
  • 大数据处理中,如何使用 GO 语言接口?
    随着大数据时代的到来,对于数据的处理越来越需要高效、快速的方法来实现。而在这个领域中,GO 语言作为一门高效、快速的编程语言,被越来越多的人所使用。GO 语言提供了一些强大的接口来帮助我们处理大数据,接下来我们将重点讲解如何使用 GO 语言...
    99+
    2023-09-17
    大数据 接口 关键字
  • Go语言中的接口和数据类型有何异同之处?
    在Go语言中,接口是一种类型。一个接口类型定义了一组方法,这些方法可以被任何实现了该接口的类型调用。数据类型是一种用于存储数据的类型。在Go语言中,接口和数据类型有很多的异同之处。 一、接口和数据类型的定义方式不同 在Go语言中,定义一个接...
    99+
    2023-08-05
    对象 接口 数据类型
  • Java接口与JavaScript自然语言处理的对比分析?
    Java接口与JavaScript自然语言处理的对比分析 Java接口和JavaScript自然语言处理是两种不同的编程语言,但它们都可以用来处理自然语言。在本文中,我们将对这两种语言进行对比分析,看看它们在自然语言处理方面的异同。 Jav...
    99+
    2023-09-17
    接口 自然语言处理 javascript
  • 自然语言处理在Go语言中的应用场景分析
    自然语言处理(NLP)是一种涵盖语音识别、机器翻译、文本分类、信息提取等多个领域的技术。在当今信息化时代,NLP技术的应用越来越广泛,涉及到的领域也越来越多。在这些应用场景中,Go语言作为一种高效的编程语言,也在NLP技术中发挥着越来越重...
    99+
    2023-09-28
    对象 自然语言处理 异步编程
  • Go 语言中如何优雅地处理对象容器接口?
    Go 语言是一门非常适合并发编程的语言,其高效的并发机制和简洁的语法深受开发者欢迎。在开发过程中,我们常常需要使用对象容器来管理数据,例如列表、栈、队列等等。本文将介绍如何在 Go 语言中优雅地处理对象容器接口。 Go 语言中的接口 在 ...
    99+
    2023-07-03
    对象 容器 接口
  • 分布式异步编程中,Go语言的自然语言处理能力如何?
    分布式异步编程是当今计算机领域的重要研究方向,而自然语言处理则是人工智能领域的热门话题。在这两个领域的交叉点上,Go语言凭借其卓越的并发和网络编程能力,成为了一种非常适合进行分布式异步编程的语言。那么,在这样的场景下,Go语言的自然语言处理...
    99+
    2023-10-05
    分布式 异步编程 自然语言处理
  • Go语言中如何处理二维码中的错误和异常情况?
    随着智能手机的普及,二维码已经成为了一种非常常见的信息识别方式。而在二维码的生成和识别过程中,难免会出现一些错误和异常情况。本文将介绍在Go语言中如何处理这些错误和异常情况。 一、二维码生成 Go语言中使用第三方库github.com/s...
    99+
    2023-08-15
    二维码 unix 索引
  • GO 语言接口在大数据处理中的作用是什么?
    随着大数据时代的到来,数据处理的需求变得越来越复杂和庞大。而 GO 语言作为一种高效、易于使用的编程语言,逐渐在大数据处理领域发挥了重要作用。其中,GO 语言接口在大数据处理中的作用尤为重要。 一、GO 语言接口概述 在 GO 语言中,接...
    99+
    2023-09-17
    大数据 接口 关键字
  • Go语言在自然语言处理中的优势与不足:详细分析。
    Go语言在自然语言处理中的优势与不足:详细分析 自然语言处理(Natural Language Processing,NLP)是人工智能领域中的一个重要分支,它涉及到对自然语言的理解、生成、翻译、分析和处理等多个方面。近年来,Go语言在NL...
    99+
    2023-09-08
    响应 自然语言处理 leetcode
  • Go语言异步编程对于大数据处理中二维码的影响分析
    二维码的应用越来越广泛,如在生产、物流等领域中,二维码已经成为了不可或缺的工具。在大数据处理中,二维码也是非常重要的一部分,而Go语言的异步编程能力对于大数据处理中的二维码有着重要的影响。 一、Go语言异步编程 Go语言是一门高效的编程语...
    99+
    2023-07-05
    二维码 异步编程 大数据
  • 探究Go语言在分布式异步编程中的自然语言处理应用前景。
    Go语言已经成为了分布式系统编程的首选语言。在分布式系统中,异步编程非常重要。因此,Go语言在分布式异步编程中有着广泛的应用。本文将 自然语言处理(NLP)是人工智能领域中的一个重要研究领域。它涉及到计算机处理人类语言的能力,包括语音识别、...
    99+
    2023-10-05
    分布式 异步编程 自然语言处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作