Tunda, Panik & Pulihkan Golang
Tunda, Panik & Pulihkan
Go memiliki pernyataan khusus yang disebut penundaan yang menjadwalkan panggilan fungsi untuk dijalankan setelah fungsi selesai. Perhatikan dan silakan ikuti contoh coding berikut:
package main
import "fmt"
func first() {
fmt.Println("1st") }
func second() {
fmt.Println("2nd") }
func main() {
defer second()
first()
}
hasil coding |
Program ini mencetak 1st diikuti oleh 2nd. Pada dasarnya menunda memindahkan panggilan kedua ke akhir fungsi, untuk sebaliknya silakan lihat contoh coding dibawah:
func main () {
second ()
first () }
hasil coding |
menunda sering digunakan ketika sumber daya harus dibebaskan dalam beberapa cara tertentu. Misalnya ketika kita membuka file, kita perlu memastikan untuk menutupnya nanti. Dengan penundaan seperti ini :
f, _: = os.Open (filename) tunda f.Close ()
Cara ini memiliki 3 keuntungan:
- itu membuat panggilan close dekat dengan panggilan open, sehingga lebih mudah untuk dipahami,
- jika fungsi memiliki beberapa pernyataan kembali (mungkin satu dalam if dan satu di lain) close akan terjadi sebelum keduanya dari printah tersebut terjadi, dan
- fungsi yang ditangguhkan dijalankan bahkan jika terjadi panik run-time.
Panik & Pulih
Sebelumnya kita membuat fungsi yang disebut fungsi panik untuk menyebabkan kesalahan waktu proses. Kita dapat menangani panik run-time dengan fungsi pemulihan bawaan. memulihkan menghentikan kepanikan dan mengembalikan nilai yang dilewatkan ke panggilan untuk panik. Kita mungkin tergoda untuk menggunakannya seperti ini:
package main
import "fmt"
func main() {
panic("PANIC")
str := recover()
fmt.Println(str) }
import "fmt"
func main() {
panic("PANIC")
str := recover()
fmt.Println(str) }
Tetapi panggilan untuk memulihkan tidak akan pernah terjadi dalam kasus ini karena panggilan untuk panik segera menghentikan eksekusi fungsi. Sebaliknya kita harus memasangkannya dengan penundaan seperti coding berikut:
package main
import "fmt"
func main() {
defer func() {
str := recover()
fmt.Println(str) }()
panic("PANIC") }
import "fmt"
func main() {
defer func() {
str := recover()
fmt.Println(str) }()
panic("PANIC") }
Kepanikan umumnya menunjukkan kesalahan programmer (misalnya mencoba mengakses indeks array yang di luar batas, lupa untuk menginisialisasi peta, dll) atau kondisi luar biasa yang tidak ada cara mudah untuk memulihkannya. (Oleh karena itu diberi nama "PANIC")
MATERI GOLANG
Jika kamu baru di pembelajaran golang, silakan untuk belajar dari materi pertama
Materi ke-1 : Program Pertama
Materi ke-2 : Cara Membaca Program
Materi ke-3 : Type Data
Materi ke-4 : Golang Number
Materi ke-5 : String pada Golang
Materi ke-6 : Boolean Pada Golang
Materi ke-7 : Variable Pada Golang
Materi ke-8 : Cara Memberi Nama Variabel
Materi ke-9 : Scope Pada Golang
Materi ke-10 : Konstanta Pada Golang
Materi ke-11 : Struktur Golang
Materi ke-12 : For Golang
Materi ke-13 : IF Golang
Materi ke-14 : Switch Case Golang
Materi ke-15 : Array Pada Golang
Materi ke-16 : Slice Pada Golang
Materi ke-17 : MAP Golang
Materi ke-18 : Functions Golang
Materi ke-19 : Mengembalikan banyak Nilai dan Variadik
Materi ke-20 : Closure golang
Materi ke-21 : Rekursif Golang
Materi ke-22 : Tunda, Panik, Dan Pulihkan
Materi ke-2 : Cara Membaca Program
Materi ke-3 : Type Data
Materi ke-4 : Golang Number
Materi ke-5 : String pada Golang
Materi ke-6 : Boolean Pada Golang
Materi ke-7 : Variable Pada Golang
Materi ke-8 : Cara Memberi Nama Variabel
Materi ke-9 : Scope Pada Golang
Materi ke-10 : Konstanta Pada Golang
Materi ke-11 : Struktur Golang
Materi ke-12 : For Golang
Materi ke-13 : IF Golang
Materi ke-14 : Switch Case Golang
Materi ke-15 : Array Pada Golang
Materi ke-16 : Slice Pada Golang
Materi ke-17 : MAP Golang
Materi ke-18 : Functions Golang
Materi ke-19 : Mengembalikan banyak Nilai dan Variadik
Materi ke-20 : Closure golang
Materi ke-21 : Rekursif Golang
Materi ke-22 : Tunda, Panik, Dan Pulihkan