debuggoModerate
Catching panics in Golang
Viewed 0 times
panicsgolangcatching
Problem
With the following code, if no file argument is given, a panic is thrown for line 9
How can I 'catch' this panic and handle it when directly when passing something to it (
I've had a search here on StackOverflow but I've not found anything that answers this as such.
panic: runtime error: index out of range as expected.How can I 'catch' this panic and handle it when directly when passing something to it (
os.Args[1]) that causes the panic? Much like try/catch in PHP or try/except in Python.I've had a search here on StackOverflow but I've not found anything that answers this as such.
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open(os.Args[1])
if err != nil {
fmt.Println("Could not open file")
}
fmt.Printf("%s", file)
}Solution
Go is not python, you should properly check for args before you use it:
func main() {
if len(os.Args) != 2 {
fmt.Printf("usage: %s [filename]\n", os.Args[0])
os.Exit(1)
}
file, err := os.Open(os.Args[1])
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", file)
}Code Snippets
func main() {
if len(os.Args) != 2 {
fmt.Printf("usage: %s [filename]\n", os.Args[0])
os.Exit(1)
}
file, err := os.Open(os.Args[1])
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", file)
}Context
Stack Overflow Q#25025467, score: 46
Revisions (0)
No revisions yet.