Sobes.tech
Junior — Middle

Hoe worden uitzonderingen en fouten afgehandeld in uw toepassing?

sobes.tech AI

Antwoord van AI

In Go verschilt de foutafhandeling van veel andere talen, omdat er geen traditionele uitzonderingen zijn. In plaats daarvan retourneren functies meestal een foutwaarde (error) als tweede resultaat.

Belangrijkste benaderingen:

  • Foutcontrole na het aanroepen van een functie:

    result, err := someFunction()
    if err != nil {
        // foutafhandeling
        log.Println("Fout:", err)
        return err
    }
    // verder gaan met result
    
  • Aanmaken van eigen fouttypes met errors.New of fmt.Errorf voor meer informatieve berichten.

  • Panic (panic) en recovery (recover) worden zelden gebruikt, vooral voor kritieke fouten die niet in de normale stroom mogen voorkomen.

  • Fouten loggen en omhoog door de stack teruggeven voor gecentraliseerde verwerking.

Voorbeeld van foutafhandeling:

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("deling door nul")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Fout:", err)
        return
    }
    fmt.Println("Resultaat:", result)
}

Op deze manier worden fouten expliciet afgehandeld in Go, wat de leesbaarheid en betrouwbaarheid van de code verhoogt.