Golang에서 오류를 처리하는 방법?

Golang Eseo Olyuleul Cheolihaneun Bangbeob



Go는 효과, 속도 및 효율성으로 인해 인기를 얻은 잘 알려진 프로그래밍 언어입니다. 그러나 다른 프로그래밍 언어와 마찬가지로 개발 및 실행 단계에서 실수가 발생할 수 있습니다. 오류를 효과적으로 처리하는 것은 Go 프로그램의 신뢰성과 안정성을 보장하는 데 필수적입니다.

이 기사에서는 Go에서 오류를 관리하기 위한 몇 가지 방법과 권장 절차를 살펴봅니다.







Golang의 오류 처리

Go에서는 다음을 수행할 수 있습니다. 오류 처리 아래 언급된 방법을 통해:



1: New() 함수

Go 언어는 다음을 제공합니다. 새로운() 오류를 관리하는 기능. 내장 오류 패키지에서 사용할 수 있는 이 기능을 통해 개발자는 프로그램에 대한 사용자 지정 오류 메시지를 만들 수 있습니다. 를 활용하여 새로운() 기능을 통해 개발자는 오류를 효과적으로 처리하고 사용자에게 의미 있는 오류 메시지를 제공할 수 있습니다.



패키지 메인

수입 '오류'
수입 'fmt'

기능 확인 ( 이름 문자열 ) 오류 {
nError := 오류.새 ( '잘못된 이름' )
만약에 이름 ! = '리눅스' {
반품 오류
}
반품
}
기능 메인 ( ) {
이름 := '리눅스'
오류 := 확인 ( 이름 )
만약에 잘못 ! = 없음 {
fmt.Println ( 잘못 )
} 또 다른 {
fmt.Println ( '유효한 이름' )
}
}





위의 코드는 다음을 사용합니다. 새로운() 수표이름 문자열인지 확인하는 함수 리눅스 주어진 이름과 일치합니다. 이 함수는 메시지와 함께 오류를 생성합니다. 잘못된 이름 이름이 아닌 경우 리눅스 . 함수는 이름이 다음과 같은 경우 오류가 없음을 표시하기 위해 nil을 반환합니다. 리눅스 .

이름 변수는 다음과 같이 설정됩니다. 리눅스 메인 함수 호출에서 수표 이름 이 함수는 이름 변수도 인수로 사용합니다. main 함수는 다음과 같은 경우 오류 메시지를 인쇄합니다. 수표 이름 함수가 오류를 반환합니다. 주요 기능은 다음을 인쇄합니다. 유효한 이름 만약 수표 이름 함수는 nil을 반환합니다.



산출

2: Errorf() 함수

그만큼 오류f() Go의 함수를 사용하면 오류도 처리할 수 있습니다. 오류f() 오류 메시지를 포맷하는 옵션을 제공합니다. fmt 패키지를 가져오면 개발자는 이를 활용하여 필요에 맞게 오류 메시지를 사용자 정의할 수 있습니다. 오류f() Go에서 오류를 관리하고 전달하는 효율성을 간소화하고 개선합니다.

패키지 메인
수입 'fmt'

함수 사업부 ( n1, n2 너 ) 오류 {

만약에 n2 == 0 {
반품 fmt.Errorf ( '%d / %d \N 숫자를 0으로 나눌 수 없습니다' , n1, n2 )
}
반품
}
기능 메인 ( ) {
오류 := 사업부 ( 42 , 0 )
만약에 잘못 ! = 없음 {
fmt.Printf ( '오류: %s' , 잘못 )
} 또 다른 {
fmt.Println ( '유효 분할' )
}
}

위의 코드에서 사업부 함수는 n1과 n2의 두 정수 입력을 받고 n2가 0이면 오류를 생성합니다. 이 함수는 n2가 0인 경우 n1 및 n2 값을 포함하는 메시지와 함께 오류를 생성합니다. 이 함수는 n2가 0이 아닌 경우 오류가 없음을 표시하기 위해 nil을 반환합니다.

메인 함수가 값 42와 0으로 div를 실행할 때 div가 반환하는 오류는 err 변수에 저장됩니다. 메인 함수는 fmt.Printf를 사용하여 div 함수가 오류를 반환하는 경우 오류 메시지를 표시합니다. 주요 기능 인쇄 유효한 구분 div 함수가 nil을 반환하는 경우.

산출

3: 명시적 오류 처리

Go는 예외에 자주 의존하는 다른 프로그래밍 언어에 비해 명시적인 오류 관리를 권장합니다. 이 접근 방식은 개발자가 try-catch 블록에 의존하는 대신 if 문을 사용하여 명시적으로 오류를 확인하도록 권장합니다. 이렇게 하면 오류를 발견하고 적절하게 수정할 가능성이 높아집니다. 이를 용이하게 하기 위해 Go는 다음을 제공합니다. 오류가 있는 경우 != nil 개발자가 함수를 실행한 후 오류를 확인하고 결과에 따라 적절한 조치를 취할 수 있도록 하는 문. 명시적인 오류 처리를 통해 Go는 오류 관리에 대한 보다 체계적이고 안정적인 접근 방식을 제공합니다.

패키지 메인
수입 'fmt'

기능 나누기 ( a, b float64 ) ( float64, 오류 ) {
만약에 b == 0 {
반품 0 , fmt.Errorf ( '0으로 나눌 수 없습니다' )
}
반품 / 비, 무
}
기능 메인 ( ) {
결과, 오류 := 나누기 ( 13 , )
만약에 잘못 ! = 없음 {
fmt.Printf ( '오류: %v \N ' , 잘못 )
} 또 다른 {
fmt.Printf ( '결과: %f \N ' , 결과 )
}
결과, 오류 = 나누기 ( 23 , 0 )
만약에 잘못 ! = 없음 {
fmt.Printf ( '오류: %v \N ' , 잘못 )
} 또 다른 {
fmt.Printf ( '결과: %f \N ' , 결과 )
}
}

이 그림에서는 나누기 함수를 사용하여 두 값을 나눕니다. 출력은 그렇게 한 결과입니다. 두 번째 숫자가 0이면 함수는 고유한 오류 메시지와 함께 오류를 생성합니다.

메인 함수에서 Divide가 두 번 호출됩니다. 유효한 입력으로 한 번, 유효하지 않은 입력으로 한 번입니다. 만약 오류!= 없음 나눗셈 기능을 사용할 때마다 오류가 발생했는지 여부를 판별하는 데 사용됩니다. 오류 메시지가 발생하면 인쇄됩니다. 그렇지 않은 경우 결과가 인쇄됩니다.

산출

4: 지연, 공황 및 복구

Golang은 또한 다음을 제공합니다. 연기하다 프로그램 또는 특정 코드 블록이 완료된 후 함수를 실행하는 데 사용되는 명령문. 그만큼 연기하다 문은 종종 다음과 함께 사용됩니다. 다시 덮다 런타임 패닉 오류를 포착하고 복구하는 기능. 런타임 패닉 오류가 발생하면 다시 덮다 기능은 오류 조건에서 복구하고 프로그램 충돌을 방지하는 데 사용됩니다. 이는 파일 닫기, 네트워크 연결 닫기 또는 리소스 해제와 같은 정리 작업에 유용합니다. 이러한 작업을 연기하면 오류가 발생하더라도 실행되도록 할 수 있습니다.

그만큼 공황 예기치 않은 오류가 발생하면 프로그램의 정상적인 실행을 중지하는 데 사용됩니다. 다시 덮다 패닉을 처리하고 프로그램 실행을 계속하는 데 사용됩니다.

패키지 메인

수입 'fmt'

기능 복구 FromPanic ( ) {
만약에 r := 복구 ( ) ; 아르 자형 ! = 없음 {
fmt.Println ( '패닉 상태에서 회복됨:' , r )
}
}
기능 나누기 ( x,y float64 ) float64 {
공황 상태에서 복구 연기 ( )

만약에 그리고 == 0 {
공황 ( '0으로 나눌 수 없습니다' )
}
반품 엑스 / 그리고
}
기능 메인 ( ) {
fmt.Println ( 나누다 ( 13 , ) )
fmt.Println ( 나누다 ( 23 , 0 ) )
}

위의 코드에서 나누기 함수는 두 개의 부동 소수점 값을 나누는 데 사용됩니다. 출력은 그렇게 한 결과입니다. 두 번째 숫자가 0인 경우 사용자 지정 오류 메시지가 함수에 의해 출력됩니다. defer 문은 다음을 호출하는 데 사용됩니다. 공황에서 복구 기능. 그만큼 공황에서 복구 함수는 나누기 함수 내에서 발생한 패닉을 감지하고 발생한 경우 오류를 인쇄합니다.

메인 함수에서 Divide가 두 번 호출됩니다. 유효한 입력으로 한 번, 유효하지 않은 입력으로 한 번입니다. 그만큼 fmt.Println 함수는 나눗셈 함수가 실행될 때마다 함수의 출력을 인쇄합니다. 그만큼 공황에서 복구 기능은 패닉이 발생하면 감지하고 패닉이 발생하면 오류를 인쇄합니다.

산출

오류를 감지한 후 프로그램은 패닉 상태에서 복구되어 계속 실행되었습니다. 그러나 코드가 당황했고 두 번째 나누기 호출에서 값을 반환하지 않았기 때문에 0을 반환했습니다.

5: 오류 래핑

Go에는 다음과 같은 기능도 포함되어 있습니다. 오류 래핑 , 오류 메시지에 추가 컨텍스트를 추가할 수 있습니다. 이는 문제를 기록하거나 오류 메시지에 추가 세부 정보를 제공하는 데 유용합니다. 이는 원래 오류와 추가 컨텍스트를 포함하는 오류 유형을 생성하여 수행할 수 있습니다.

패키지 메인

수입 '오류'
수입 'fmt'

기능 메인 ( ) {
만약에 오류 := 바 ( ) ; 잘못 ! = 없음 {
fmt.Println ( 잘못 )
}
}
기능 나누기 ( a, b float64 ) ( float64, 오류 ) {
만약에 b == 0 {
반품 0 , 오류.신규 ( '0으로 나누기' )
}
반품 / 비, 무
}
기능 바 ( ) ( 오류 오류 ) {
_, 오류 = 나누기 ( 42 , 0 )
만약에 잘못 ! = 없음 {
반품 fmt.Errorf ( '계산 실패: %w' , 잘못 )
}
반품
}

위의 코드에서 나누기 함수는 이 예제에서 두 숫자의 비율을 계산하고 두 번째 값이 0이면 오류를 발생시킵니다. bar 함수는 나누기 함수를 호출한 다음 오류를 래핑합니다. 나누다 fmt.Errorf 함수를 사용하여 원래 오류 메시지를 포함하는 메시지와 함께 새 오류를 반환합니다. bar 함수는 main 함수에 의해 호출되며 반환되는 모든 오류도 인쇄합니다.

산출

결론

소프트웨어 개발에는 다음이 포함되어야 합니다. 오류 처리 , Golang에는 이를 정상적으로 수행하기 위한 다양한 내장 기능과 방법이 있습니다. 이러한 메커니즘을 통해 개발자는 오류를 포착 및 복구하고, 프로그램 충돌을 방지하고, 최종 사용자에게 유익한 오류 메시지를 제공할 수 있습니다. 이러한 오류 처리 메커니즘을 효과적으로 사용함으로써 개발자는 강력하고 안정적이며 효율적인 소프트웨어 응용 프로그램을 구축할 수 있습니다.