Defer, Panic dan Recover Di Golang

oleh
Defer, Panic dan Recover Di Golang

Sebelumnya kita sudah membahas mengenai closure di golang, materi selanjutnya akan membahas mengenai Defer, Panic dan Recover Di Golang.

Defer

Daftar Isi

Apa itu Defer ? Defer Function merupakan Function yang dapat dijadwalkan untuk dieksekusi sebelum function selesai dieksekusi. Defer function akan tetap dieksekusi walaupun function tersebut error.

contoh Defer dalam kode program Golang

package main

import "fmt"

func alert(){
	fmt.Println("Selesai memanggil Function run")
	}

func run(value int){
	defer alert()
	fmt.Println("Aplikasia dijalankan")
	hasil :=100/value
	fmt.Println(hasil)
	}
func main() {
	run(0)
}

pada contoh kode di atas, kita telah membuat error yaitu 100/0. Namun kita menginginkan program tetap berjalan meski terjadi error. Jika demikian, maka dapat menggunakan defer

defer alert()

hasil running dari kode program di atas

image 13

panic

berikutnya setelah defer function, ada panic function, panic function merupakan function yang dapat digunakan untuk menghentikan program.

panic function biasanya dipanggil disaat terjadi error ketika program dijalankan. Saat panic function dipanggil program akan terhenti namun defer function akan tetap dieksekusi.

contoh pada kode proram Golang

package main

import "fmt"

func alert(){
	fmt.Println("Aplikasi Selesai")
	}

func run(error bool){
	defer alert()
	if error {
		panic("APLIKASI ERROR")	
	   }
	fmt.Println("Aplikasi Berjalan Normal")
	}
func main() {
	run(true)
	fmt.Println("Aplikasi tetap berjalan")
}
image 14

pada cotoh panic function di atas, kita memiliki sebuah function run. Jika kondisi error didalam function run tersebut bernilai true, ketika program dijalankan, maka akan masuk kedalam kondisi akan menjalankan function panic dan kemudian akan menghentikan program, dan kode

fmt.Println(“Aplikasi tetap berjalan”)

tidak dijalankan, karena aplikasi dihentikan. Namun defer tetap dijalankan, itu sebabnya ada tampil “Aplikasi Selesai”.

Recover

Recover function dapat digunakan untuk menangkap data dari function panic, dengan recover proses panic akan berhenti sehingga progra akan tetap berjalan.

contoh dalam kode program Go-lang

package main

import "fmt"

func alert(){
	pesan := recover()
	if pesan != nil{
	      fmt.Println("Error menggunakan recover :",pesan)
	   }
	fmt.Println("Aplikasi Selesai")
	}

func run(error bool){
	defer alert()
	if error {
		panic("APLIKASI ERROR")	
	   }
	
	fmt.Println("Aplikasi Berjalan Normal")
	}
func main() {
	run(true)
	fmt.Println("Aplikasi tetap berjalan")
}
image 15

pada contoh kode di atas merupakan penggunaan function recovery, tetap menjalankan pesan error dari panic function yang dihandle oleh recovery function namun program tetap berjalan, terbukti dari munculnya “Aplikasi tetap berjlan”.

baca juga Closure di Golang

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.