Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Pengendalian Ralat Go Boleh Diperbaiki untuk Kebolehbacaan dan Kesingkatan?

Bagaimanakah Pengendalian Ralat Go Boleh Diperbaiki untuk Kebolehbacaan dan Kesingkatan?

DDD
Lepaskan: 2024-11-26 05:00:10
asal
445 orang telah melayarinya

How Can Go's Error Handling Be Improved for Readability and Conciseness?

Pengendalian Ralat dalam Go

Pengendalian ralat dalam Go ialah aspek pengaturcaraan yang penting. Bahasa ini menggalakkan pemeriksaan dan pengendalian ralat langsung, yang boleh membawa kepada ralat pengendalian kod bertele-tele secara berulang.

Pertimbangkan contoh rekaan berikut yang menyalurkan "Hello world!" ke dalam cat dan membaca output:

package main

import "fmt"
import "io"
import "io/ioutil"
import "os/exec"


func main() {
    cmd := exec.Command("cat", "-")
    stdin, err := cmd.StdinPipe()
    if err != nil {
        return
    }
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        return
    }
    err = cmd.Start()
    if err != nil {
        return
    }
    _, err = io.WriteString(stdin, "Hello world!")
    if err != nil {
        return
    }
    err = stdin.Close();
    if err != nil {
        return
    }
    output, err := ioutil.ReadAll(stdout)
    if err != nil {
        return
    }
    fmt.Println(string(output))
    return
}
Salin selepas log masuk

Contoh ini mempunyai berbilang baris kod pengendalian ralat untuk setiap operasi.

Pendekatan idiomatik dalam Go ialah mengendalikan ralat secara terpusat. Sebagai contoh, kita boleh merangkum operasi paip dalam fungsi tersuai yang menguruskan ralat secara dalaman:

package main

import (
    "fmt"
    "io"
    "io/ioutil"
    "os"
    "os/exec"
)

func piping(input string) (string, error) {
    cmd := exec.Command("cat", "-")
    stdin, err := cmd.StdinPipe()
    if err != nil {
        return "", err
    }
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        return "", err
    }
    err = cmd.Start()
    if err != nil {
        return "", err
    }
    _, err = io.WriteString(stdin, input)
    if err != nil {
        return "", err
    }
    err = stdin.Close()
    if err != nil {
        return "", err
    }
    all, err := ioutil.ReadAll(stdout)
    output := string(all)
    if err != nil {
        return output, err
    }
    return output, nil
}

func main() {
    in := "Hello world!"
    fmt.Println(in)
    out, err := piping(in)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    fmt.Println(out)
}
Salin selepas log masuk

Pendekatan ini mengurangkan jumlah kod pengendalian ralat dalam fungsi utama, menjadikannya lebih ringkas dan lebih mudah dibaca .

Atas ialah kandungan terperinci Bagaimanakah Pengendalian Ralat Go Boleh Diperbaiki untuk Kebolehbacaan dan Kesingkatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan