Always use panic
for errors that can only happen when other code in
osbuild-composer is wrong (also know as programmer error). This way, we
catch these kinds of errors in unit tests while developing.
Since only developers interact with these errors, a stacktrace including the error is all that's necessary. Don't include an additional message.
For example, Go's json.Marshal
can fail when receiving values that cannot be
marshaled. However, when passing a known struct, we know it cannot fail:
bytes, err := json.Marshal(); if err != nil { panic(err) }
Some packages have functions prefixed with Must
, which panic()
on error.
Use these when possible to save the error check:
re := regexp.MustCompile("v[0-9]")