美文网首页Go语言实践Go
go 语言错误处理

go 语言错误处理

作者: guazi1020 | 来源:发表于2019-06-18 15:26 被阅读0次

<meta charset="utf-8">

go 语言错误处理

panic recover defer 最大公约数 最小公倍数

go语言中的没有try catch的。代替的是panic-recover的机制。手动编写错误提示。

举个栗子:

//求正整数a和b的最小公倍数
 package main import "fmt" 
//最小公约数 
func multiple(a, b int) int {    
   c := divisor(a, b)    
   return (a * b / c) 
} 
//最大公约数 
func divisor(a, b int) int {
     var r int
     fmt.Println(a, "%", b, "=", a%b)
     for {
         r = a % b
         if r != 0 {
             a = b
             b = r
         } else {
             break
         }
     }
     return b
 }
 func main() {
     fmt.Println("aa")
     var a, b int
     fmt.Scanf("%d,%d", &a, &b)
     defer func() {
         if err := recover(); err != nil {
             fmt.Println("异常退出", err)
         } else {
             fmt.Println(multiple(a, b))
         }
     }()
     f(a, b)
 }
 //判定不能a>b
 func f(a, b int) {
     if a > b {
         panic("a不能大于b")
     }
 }

为了能捕捉到 panic输出的内容,并让其不报错。主程序中需要对使用验证的部分进行defer。

关于defer的func(){}()的问题

尝试一下

func test() {
     for i := 0; i < 3; i++ {
         defer func() {
             fmt.Println(i)
         }()
     }
 }
 func main(){
   test()
 }

输出为:


image.png

看来循环后才把i值传进去。

func test() {
     for i := 0; i < 3; i++ {
         defer func(i int) {
             fmt.Println(i)
         }(i)
     }
 }

通过(i)把值传进去。

输出:


image.png

相关文章

  • Go 语言基础——错误处理

    学习目标 掌握错误处理 掌握自定义错误处理 掌握defer关键字的使用 错误处理 GO没有异常处理机制 Go语言引...

  • 2021-06-08

    Go的编程模式,错误处理 引入了其他语言的错误处理模式,最后,说明Go错误处理的好处。主要是将函数的入参、出参、错...

  • golang

    golang go和php的区别类型:go为编译性语言;php解释性语言错误:go的错误处理机制;php本身或者框...

  • Learn Golang in Days - Day 15-Go

    Learn Golang in Days - Day 15-Go错误处理 简介 Go语言通过内置错误接口提供了简单...

  • go 语言错误处理

    go 语言错误处理 panic recover defer 最大公约数 最小公倍数 go语言中的没有try cat...

  • go语言20小时从入门到精通(九、异常处理)

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

  • Go语言之错误处理

    一. 异常处理 1. error接口 Go语言中引入了一个关于错误处理的标准模式error接口,是go语言的内置接...

  • Go语言基础05——异常、正则、字符串、json、文本文件处理

    异常 Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型 字符串处理 字符串在...

  • Go学习笔记-错误与异常

    Go 语言的异常处理语法绝对是独树一帜,在我见过的诸多高级语言中,Go 语言的错误处理形式就是一朵奇葩。 一方面它...

  • 《Go语言入门经典》10~12章读书笔记

    第10章处理错误 10.1 错误处理及Go语言的独特之处 在Go语言中,一种约定是在调用可能出现问题的方法或函数时...

网友评论

    本文标题:go 语言错误处理

    本文链接:https://www.haomeiwen.com/subject/aaufqctx.html