go 이상 처리
error
인터페이스 선언은 다음과 같습니다.
type error interface {
Error() string
}
오류 생성
err:=errors.New ("") //는 반환된 error 형식 값의 문자열 표현 형식을 반환합니다.
func New(text string) error {
return &errorString{text}
}
err2:=fmt.Errorf("%s","A Error")
// , error ,
//
func Errorf(format string, a ...interface{}) error {
return errors.New(Sprintf(format, a...))
}
panic
panic 함수는 현재 제어 프로세스 (Groutine) 의 실행을 멈추고 실행 시 공황을 보고하는 데 사용됩니다.그것은 임의의 유형의 매개 변수를 받아들일 수 있다.그러나 이 매개 변수는 일반적으로string 형식 값이나error 형식 값입니다.
panic(errors.New("A error"))
recover
실행 중 공황이 발생하면 프로그램이 붕괴될 때까지 호출 방법으로 전달됩니다.이것은 당연히 우리가 만나고 싶은 것이 아니다. 왜냐하면 누구도 프로그램이 아무런 운행시 문제가 발생하지 않을 것이라고 보장할 수 없기 때문이다.그러나 Go 언어는 "차단"실행 시 당황하는 함수인 Recover를 제공합니다.
그러나 이 키 함수만 가지고는 공황을 차단하기에는 부족하다.실행 중 공황으로 인해 프로그램이 프로세스 제어권을 잃어버려서 코드를 공황 후에 실행할 수 없습니다.그러나 예외: defer 문장
defer func() {
if r:=recover();r!=nil{
fmt.Printf("Recover panice %s
",r)
}
}()
인터넷의try/catch
package main
import (
"reflect"
)
type TryCatch struct {
errChan chan interface{}
catches map[reflect.Type]func(err error)
defaultCatch func(err error)
}
func (t TryCatch) Try(block func()) TryCatch {
t.errChan = make(chan interface{})
t.catches = map[reflect.Type]func(err error){}
t.defaultCatch = func(err error) {}
go func() {
defer func() {
t.errChan
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.