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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值