•  


Go by Example: Custom Errors

Go by Example : Custom Errors

It’s possible to use custom types as error s by implementing the Error() method on them. Here’s a variant on the example above that uses a custom type to explicitly represent an argument error.

package
 main
import
 (

    "errors"

    "fmt"

)

A custom error type usually has the suffix “Error”.

type
 argError
 struct
 {

    arg
     int

    message
 string

}

Adding this Error method makes argError implement the error interface.

func
 (
e
 *
argError
)
 Error
()
 string
 {

    return
 fmt
.
Sprintf
(
"%d - %s"
,
 e
.
arg
,
 e
.
message
)

}
func
 f
(
arg
 int
)
 (
int
,
 error
)
 {

    if
 arg
 ==
 42
 {

Return our custom error.

        return
 -
1
,
 &
argError
{
arg
,
 "can't work with it"
}

    }

    return
 arg
 +
 3
,
 nil

}
func
 main
()
 {

errors.As is a more advanced version of errors.Is . It checks that a given error (or any error in its chain) matches a specific error type and converts to a value of that type, returning true . If there’s no match, it returns false .

    _
,
 err
 :=
 f
(
42
)

    var
 ae
 *
argError

    if
 errors
.
As
(
err
,
 &
ae
)
 {

        fmt
.
Println
(
ae
.
arg
)

        fmt
.
Println
(
ae
.
message
)

    }
 else
 {

        fmt
.
Println
(
"err doesn't match argError"
)

    }

}
$
 go run custom-errors.go
42
can't work with it

Next example: Goroutines .

- "漢字路" 한글한자자동변환 서비스는 교육부 고전문헌국역지원사업의 지원으로 구축되었습니다.
- "漢字路" 한글한자자동변환 서비스는 전통문화연구회 "울산대학교한국어처리연구실 옥철영(IT융합전공)교수팀"에서 개발한 한글한자자동변환기를 바탕하여 지속적으로 공동 연구 개발하고 있는 서비스입니다.
- 현재 고유명사(인명, 지명등)을 비롯한 여러 변환오류가 있으며 이를 해결하고자 많은 연구 개발을 진행하고자 하고 있습니다. 이를 인지하시고 다른 곳에서 인용시 한자 변환 결과를 한번 더 검토하시고 사용해 주시기 바랍니다.
- 변환오류 및 건의,문의사항은 juntong@juntong.or.kr로 메일로 보내주시면 감사하겠습니다. .
Copyright ⓒ 2020 By '전통문화연구회(傳統文化硏究會)' All Rights reserved.
 한국   대만   중국   일본