码迷,mamicode.com
首页 > 编程语言 > 详细

Go语言错误处理小例子

时间:2015-02-26 18:36:15      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:golang   error   自定义error   go语言的错误处理   

         满屏的error处理会是个悲剧,也不利于对错误进行区分处理。
建议在项目中多用自定义错误,再对错误集中处理。

package main

//error处理方式演示
//author: Xiong Chuan Liang
//date: 2015-2-26

import "fmt"
import "errors"

func main() {

	errType(test0())
	errType(test1(" test1 "))
	errType(test2(500))
	errType(test3(" test3 "))
	errType(test4(" test4 "))
}

type Error1 struct {
	arg    int
	errMsg string
}

func (e *Error1) Error() string {
	return fmt.Sprintf("%s", e.errMsg)
}

type Error2 struct {
	arg    string
	errMsg string
}

func (e *Error2) Error() string {
	return fmt.Sprintf("%s", e.errMsg)
}

func test0() error {
	return errors.New("errors.New() - test0()")
}

func test1(arg string) error {
	return fmt.Errorf("fmt.Errorf() - test1()")
}

func test2(arg int) *Error1 {
	return &Error1{arg, "Error1{} - test2()"}
}

func test3(arg string) error {
	return &Error2{arg, "Error2{} - test3()"}
}

func test4(arg string) *Error2 {
	return &Error2{arg, "Error2{} - test4() "}
}

func errType(err interface{}) {
	switch e := err.(type) {
	case *Error1:
		fmt.Println("Type:Error1 ", e)
	case *Error2:
		fmt.Println("Type:Error2 ", e)
	case error:
		fmt.Println("Type:error ", e)
	default:
		fmt.Println("Type:default ", e)
	}
}

/*
运行效果:
Type:error  errors.New() - test0()
Type:error  fmt.Errorf() - test1()
Type:Error1  Error1{} - test2()
Type:Error2  Error2{} - test3()
Type:Error2  Error2{} - test4()
*/



MAIL: xcl_168@aliyun.com

BLOG: http://blog.csdn.net/xcl168


Go语言错误处理小例子

标签:golang   error   自定义error   go语言的错误处理   

原文地址:http://blog.csdn.net/xcl168/article/details/43955159

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!