bendera golang abaikan ralat

WBOY
Lepaskan: 2023-05-10 17:59:37
asal
581 orang telah melayarinya

Bahasa Go (golang) ialah bahasa pengaturcaraan bahagian belakang yang berkembang pesat. Ia dibangunkan oleh Google untuk menyediakan bahasa pengaturcaraan yang pantas, cekap, ringkas dan selamat. Dalam aplikasi praktikal, Golang menyediakan pakej bendera yang boleh digunakan untuk membaca parameter daripada baris arahan. Walau bagaimanapun, penggunaan ini mempunyai beberapa kelemahan, kerana kadangkala nilai parameter yang diluluskan dalam baris arahan tidak memenuhi keperluan Pada masa ini, program akan membuang ralat dan berhenti, menyebabkan keseluruhan program ranap. Artikel ini akan memperkenalkan cara mengabaikan ralat apabila menggunakan pakej bendera golang dan memberikan kaedah pelaksanaan khusus.

Penggunaan asas pakej bendera Golang

Pakej bendera Golang menyediakan cara mudah untuk menghuraikan parameter baris arahan. Dalam program Go, anda boleh menghuraikan parameter baris arahan dengan mudah dengan hanya mengimport pakej bendera. Pakej bendera menyediakan dua cara untuk membaca parameter baris arahan: flag.String() dan flag.Int().

Gunakan fungsi flag.StringVar() untuk membaca nilai parameter jenis rentetan daripada baris arahan. Jika anda perlu membaca nilai parameter jenis integer, anda boleh menggunakan fungsi flag.IntVar(). Penggunaan asas kedua-dua fungsi adalah seperti berikut:

var (
    name string
    age  int
)

func main() {
    flag.StringVar(&name, "name", "default name", "please input name")
    flag.IntVar(&age, "age", 18, "please input age")
    flag.Parse()
    fmt.Printf("name=%s, age=%d", name, age)
}
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh di atas, kita membaca jenis rentetan dan integer dalam baris arahan melalui fungsi flag.StringVar() dan flag.IntVar(). parameter, dan nilai yang diberikan kepada nama pembolehubah dan umur masing-masing. Apabila mentakrifkan pembolehubah, kami juga boleh mentakrifkan nilai lalai dan membantu maklumat untuk pembolehubah dipaparkan kepada pengguna apabila program bermula. Akhir sekali, fungsi flag.Parse() merangkum operasi sebenar penghuraian parameter baris arahan.

Ralat pengendalian pakej bendera Golang

Semasa penggunaan pakej bendera Golang, jika jenis parameter baris arahan tidak sepadan, Golang akan mengembalikan ralat dan menyekat pelaksanaan program selanjutnya. Contohnya, jika umur input ialah rentetan dan program kami perlu membaca umur jenis integer, program tidak akan dapat meneruskan pelaksanaan.

Jadi bagaimana kita harus menangani ralat ini dalam penggunaan sebenar? Malah, pakej bendera itu sendiri menyediakan kaedah pemprosesan - keluar dari program melalui fungsi os.Exit() selepas pengendalian ralat. Contohnya:

var (
    name string
    age  int
)

func main() {
    flag.StringVar(&name, "name", "default name", "please input name")
    flag.IntVar(&age, "age", 18, "please input age")
    flag.Parse()
    fmt.Printf("name=%s, age=%d", name, age)
}
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh di atas, jika umur yang dimasukkan tidak memenuhi keperluan julat, program akan membuang ralat dan menghentikan pelaksanaan. Dalam kes ini, nilai yang kami hantar dalam baris arahan adalah tidak sah. Oleh itu, kita perlu mengubah suai atur cara supaya ia boleh meneruskan pelaksanaan dan memproses nilai parameter lain.

Abaikan pelaksanaan yang salah

Untuk program meneruskan pelaksanaan, anda perlu menggunakan fungsi tangguh dalam Golang. Fungsi Defer digunakan untuk menangguhkan pelaksanaan pernyataan fungsi pada akhir pelaksanaan fungsi. Dalam kes ini, kita boleh menggunakannya untuk memulihkan aliran kawalan program.

Dalam pelaksanaan, kita boleh menggunakan fungsi pulih untuk menangkap ralat dan menetapkan nilai pulih kepada nilai lalai. Menggunakan kaedah ini memastikan aplikasi kami akan berfungsi dengan baik dalam apa jua keadaan, malah ralat tidak akan menyekat kemajuan program. Contohnya adalah seperti berikut:

var (
    name string
    age  int
)

func main() {
    flag.StringVar(&name, "name", "default name", "please input name")
    flag.IntVar(&age, "age", 18, "please input age")
    defer func() {
        if err := recover(); err != nil {
            log.Printf("error: %s", err)
            age = 18
        }
    }()
    flag.Parse()
    fmt.Printf("name=%s, age=%d", name, age)
}
Salin selepas log masuk

Dalam contoh di atas, kami mentakrifkan fungsi tangguh sebelum bahagian utama program. Fungsi ini menangkap ralat dan mencetaknya, kemudian menetapkan umur kepada nilai lalai 18. Jika kita kini menetapkan umur sebagai rentetan dan bukannya nombor, program akan menangkap ralat. Ralat yang ditangkap akan dicetak ke konsol, dan program kemudian akan meneruskan pelaksanaan dan mengeluarkan nilai umur lalai 18.

Kesimpulan:

Golang menyediakan pakej bendera untuk membantu kami menghuraikan parameter baris arahan. Walau bagaimanapun, jika terdapat ralat dalam argumen baris arahan, program akan berhenti melaksanakan. Dalam aplikasi sebenar, penggunaan ini boleh menyebabkan keseluruhan program ranap. Untuk mengelakkan perkara ini berlaku, kita perlu menggunakan fungsi tangguh dan pulih untuk mengabaikan ralat dan menyambung semula pelaksanaan program yang biasa. Melalui demonstrasi contoh di atas, kita dapat melihat bahawa adalah sangat mungkin untuk mengabaikan kaedah pelaksanaan yang salah. Walau bagaimanapun, sila ambil perhatian bahawa berhati-hati diperlukan semasa memohon dalam program untuk mengelakkan situasi tidak normal yang lain.

Atas ialah kandungan terperinci bendera golang abaikan ralat. 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