Yeah, most errors occur somewhere in a library that you use (because libraries typically do the actual heavy lifting) and in the vast majority of cases, it will give you a (English) string describing what went wrong.
If you can just slap that string into the final error message (or at least into logging), that is so much easier and more helpful than pretending you could possibly assign an error code to each such error case.
Yeah, most errors occur somewhere in a library that you use (because libraries typically do the actual heavy lifting) and in the vast majority of cases, it will give you a (English) string describing what went wrong.
If you can just slap that string into the final error message (or at least into logging), that is so much easier and more helpful than pretending you could possibly assign an error code to each such error case.
Error codes for complex things are an invention of proprietary software companies trying to hide what they are doing from you