[go] 에러 처리와 트랜잭션 처리

GO 언어는 에러 처리와 트랜잭션 처리를 위한 다양한 기능을 제공하여 안정적인 소프트웨어를 개발하는 데 도움이 됩니다. 이번 글에서는 GO 언어에서의 에러 처리와 트랜잭션 처리를 하기 위한 방법에 대해 알아보겠습니다.

에러 처리

GO 언어는 에러를 다루기 위해 내장된 기능을 제공합니다. 에러 처리를 위해 가장 많이 사용되는 방법은 error 인터페이스를 활용하는 것입니다. 예를 들어, 다음은 간단한 파일 읽기 함수의 에러 처리 예제입니다.

package main

import (
    "fmt"
    "io/ioutil"
)

func readFile(filename string) error {
    data, err := ioutil.ReadFile(filename)
    if err != nil {
        return fmt.Errorf("파일을 읽는 도중 오류 발생: %v", err)
    }
    fmt.Println(string(data))
    return nil
}

func main() {
    err := readFile("example.txt")
    if err != nil {
        fmt.Println("에러 발생:", err)
    }
}

위 코드에서 readFile 함수는 ioutil.ReadFile을 사용하여 파일을 읽고, 발생한 에러를 처리하는 예제입니다. 에러가 발생하면 해당 에러를 반환하고, 호출하는 쪽에서 이를 처리할 수 있도록 합니다.

트랜잭션 처리

GO 언어에서 데이터베이스와 같은 시스템에서 트랜잭션을 처리하기 위해서는 database/sql 패키지를 사용하여 데이터베이스와의 연결 및 트랜잭션을 다룰 수 있습니다. 아래는 GO 언어에서 MySQL 데이터베이스를 사용하는 간단한 트랜잭션 처리 예제입니다.

package main

import (
	"database/sql"
	"fmt"

	_ "github.com/go-sql-driver/mysql"
)

func main() {
	db, err := sql.Open("mysql", "user:password@/dbname")
	if err != nil {
		panic(err.Error())
	}
	defer db.Close()

	tx, err := db.Begin()
	if err != nil {
		panic(err.Error())
	}

	_, err = tx.Exec("INSERT INTO example (id, name) VALUES (1, 'example')")
	if err != nil {
		tx.Rollback()
		panic(err.Error())
	}

	err = tx.Commit()
	if err != nil {
		panic(err.Error())
	}

	fmt.Println("트랜잭션 완료")
}

위 코드에서 tx.Begin을 통해 트랜잭션을 시작하고, tx.Commit을 통해 트랜잭션을 커밋하거나, tx.Rollback을 통해 롤백하는 과정을 보여줍니다.

GO 언어를 사용하여 안정적이고 신뢰성 있는 소프트웨어를 개발하기 위해서는 에러 처리와 트랜잭션 처리에 대한 이해가 중요합니다. GO 언어가 제공하는 다양한 기능을 활용하여 안정적인 소프트웨어를 개발할 수 있도록 노력해야 합니다.

더 많은 정보는 공식 GO 언어 문서를 참고하시기 바랍니다.

참고 자료