Description
StringError is useful in cases where the client is not expected to be able to consume the specific error message programmatically (for example, if the error message is to be presented to the user).
StringError can also be used when additional information is to be printed along with a error_code message. Depending on the constructor called, this class can either display: 1. the error_code message (ECError behavior) 2. a string 3. the error_code message and a string
These behaviors are useful when subtyping is required; for example, when a specific library needs an explicit error type. In the example below, PDBError is derived from StringError:
Expected<int> foo() {
return llvm::make_error<PDBError>(pdb_error_code::dia_failed_loading,
"Additional information");
}