Why did Go add panic and recover in addition to error handling? <p>Why did Go end up adopting exception handling with panic/recover, when the language is so idiomatic and a strong advocate of error codes? What scenarios did the designers of Go envision not handled by error codes and necessitate panic/recover?</p> <p>I understand convention says limit panic/recover, but does the runtime also limit them in ways that they can't be used as general throw/catch in C++?</p>