zoukankan      html  css  js  c++  java
  • Golang 异常处理

    在写 go 开发过程中我们要不断的写err判断,这个真是一个头疼的事情

    下面我们来说说 golang 中关于错误处理的相关问题把

    golang 中有一个error类型用来作为err信息处理

    golang 中如何抛出异常和捕获异常

    - 系统自己抛出异常
    - 自己手动抛出异常,使用`panic()`函数手动抛出
    - 使用`recover()`函数捕获异常
    
    package main
    
    import "fmt"
    
    // 系统抛
    func test001() {
    	x := [5]int{0, 1, 2, 3, 4}
    	x[1] = 10
    
    	fmt.Println(x)
    
    	// 超出索引触发异常
    	index := 100
    	x[index] = 20
    	fmt.Println(x)
    }
    
    // 自己抛出异常
    func getCircleArea(x float32) float32 {
    	if x < 0 {
    		// 手动使用panic触发异常
    		panic("半径不能为负数")
    	}
    	return 3.14 * x * x
    }
    
    // 捕获panic异常
    func test002() {
    	defer func() {
    		if err := recover(); err != nil {
    			fmt.Println(err)
    		}
    	}()
    	area := getCircleArea(-10)
    	fmt.Println(area)
    }
    
    func main() {
    	//test001()
    
    	//area := getCircleArea(10)
    	// 传一个负数触发异常
    	//area := getCircleArea(-10)
    	//fmt.Println(area)
    
    	test002()
    }
    

    返回异常

    返回异常类型为error类型

    package main
    
    import (
    	"errors"
    	"fmt"
    )
    
    // 自定义返回异常
    func getCircleArea(x float32) (area float32, err error) {
    	if x < 0 {
    		// 初始化一个错误信息
    		// err = errors.New("半径不能为空")
    		err = fmt.Errorf("%s", "半径不能为空")
    		return
    	}
    	area = 3.14 * x * x
    	return
    }
    
    func main() {
    	area, err := getCircleArea(-10)
    	// 根据返回的错误信息处理异常
    	if err != nil {
    		fmt.Println(err)
    		return
    	}
    	fmt.Println(area)
    }
    
  • 相关阅读:
    .Net环境下的缓存技术介绍
    JavaScript 全局对象
    JavaScript escape() 函数
    实现DIV拖动
    巧用Ajax的beforeSend 提高用户体验
    js中ie8下不识别indexOf的解决办法
    页面弹窗效果HTML
    让html页面中的文字不可选中
    MVC路由规则
    C# Math.Round
  • 原文地址:https://www.cnblogs.com/zhichaoma/p/12509699.html
Copyright © 2011-2022 走看看