Akademi Manajemen Informatika

Defer

Dalam bahasa pemrograman Go, defer adalah sebuah statement yang akan menunda pengeksekusian sebuah function, atau anonymous function hingga function terdekatnya selesai dieksekusi atau mengembalikan nilai. Mungkin pengertian ini sedikit membingungkan ya, tapi defer function ini mirip seperti defer yang kita gunakan pada tag script di html.

Berikut ini adalah Misalnya defer function di Golang:

package main

import "fmt"

func hello() {
	fmt.Println("Hello World!")
}

func main() {
	defer hello()
	fmt.Println("Show me")
}

output:

Dari Misalnya di atas, Engkau Bisa Menonton bahwa ketika kita memanggil function diawali dengan defer statement akan dieksekusi setelah function main selesai dieksekusi. Ini dibuktikan dengan hasil output yang kita dapatkan Yakni text “Show me” akan diprint terlebih dahulu, baru setelah itu text “Hello World!” yang berasal dari function hello.

Function yang dipanggil menggunakan defer statement juga akan selalu dijalankan meskipun terjadi error. Berikut ini contohnya:

package main

import "fmt"

func hello() {
	fmt.Println("Hello World!")
}

func main() {
	defer hello()

	div := 0 // pembagi 0 biar error
	result := 3/div

	fmt.Println(result)
}

output:

Hello World!
panic: runtime error: integer divide by zero

goroutine 1 [running]:
main.main()
        D:/golang/seri-belajar-folang/defer.go:13 +0x3b
exit status 2

Dari Misalnya tersebut Engkau Bisa Menonton bahwa text “Hello World!” tetap tercetak walaupun terjadi error yang disebabkan pembagian menggunakan Nihil.

READ  Definisi, Tugas, Skill, Jenis & Gaji

Panic

Panic adalah sebuah function yang digunakan Buat menghentikan program. Panic function biasanya akan terpanggil Begitu terjadi error pada program kita. Contohnya seperti error yang sengaja kita buat pada Misalnya defer, terdapat keyword “panic” pada pesan error yang muncul.

Panic function juga Bisa kita panggil secara manual. Hal ini akan Berfaedah misalnya ketika kita melakukan pengecekan terhadap suatu kondisi. Ketika panic function dipanggil, function yang menggunakan statement defer akan tetap dijalankan meskipun program dihentikan.

Berikut ini adalah Misalnya panic function:

package main

import "fmt"

func hello() {
	fmt.Println("Hello World!")
}

func main() {
	// kode ini akan tetap dieksekusi
	defer hello()

	// meskipun kita memanggil panic function
	panic("Panic dipanggil")

	// sedangkan kode ini Bukan akan dieksekusi, karena program berhenti
	// setelah panic function dipanggil
	fmt.Println("Bukan akan dieksekusi")
}

output:

Hello World!
panic: Panic dipanggil

goroutine 1 [running]:
main.main()
        D:/golang/seri-belajar-folang/panic.go:14 +0x49
exit status 2

Recover

Recover adalah sebuah function yang berfungsi Buat menangkap data dari panic function. Recover function Mempunyai kegunaan yang Dekat sama seperti catch pada bahasa pemrogramman lain. Recover digunakan Buat mencegah program terhenti karena terjadi “panic”.

READ  Definisi, Sejarah, Langkah Kerja, Perbedaan Dengan POP

Berikut ini Misalnya recover function:

package main

import "fmt"

func checkSudahMakan(sudahMakan bool) {
	if sudahMakan == false {
		panic("Ups, Engkau belum makan")
	}

	fmt.Println("Mantap, sudah makan")
}

func selesai() {
	er := recover()

	if er != nil {
		fmt.Println("Eksis eror:", er)
	}

	fmt.Println("Selesai")
}

func main() {
	defer selesai()
	checkSudahMakan(false)
}

output:

Eksis eror: Ups, Engkau belum makan
Selesai

Dari Misalnya tersebut, Engkau Bisa Menonton bahwa kode program kita Bukan terhenti karena terjadi “panic”, tetapi program akan Maju dijalankan dengan menampilkan pesan eror seperti pesan Biasa.

Konsep penggunaan recover ini mirip seperti block try-catch di dalam bahasa pemrograman lainnya.

READ  Mengenal Tipe Data Boolean, Fungsi, Operator, dan Contohnya

Misalnya di javascript:

try {
  // kode
} catch (error) {
  console.error("Eksis error: " + error);
}

Berikutnya: #30: Struct