I've always found C++'s "trend" of handling normal or non-exceptional system errors with exceptions lackluster (and I'm being charitable). Overall trimming things down to (basically) passing around a couple integers and telling the user to check their manual is much better, much less error prone, and much more efficient and deterministic.
The client was full on using Qt Framework with Qt Creator, so I also made it in Qt.
I return QSqlError in my functions and point the user to QSqlError documentation in Qt
I even show them that they can press F1 at any time in Qt Creator to get the help page
Months later, client engineers raise problem with senior management that they don't have a bool return value (I am sitting 10m away in the same room as the client. Senior management is in another state)
I press F1 on their computer and show the user bool QSqlError::isValid()
Note again, that all client devs at this point, have been using Qt, years before I enter.
User says they don't have a bool result.
I open their code and show them how to use isValid() in an if statement.
User puts a requirement for custom functions returning bool
I make more functions for that
Months later, I get a bug report, stating that the deleteDocument function is deleting the document but returning false.
I check the code
API::deleteDocument(docId);
if (API::deleteDocument(docId))
{
// output to UI
}
Yes, they called deleteDocument on the same ID twice.
BTW, I did create a manual with usage examples.
A few months later, a senior engineer on the client side checks their code and tells me to throw exceptions for everything, because half of the time, the user-devs are not checking the QSqlError return values.
[[nodiscard]]
From what I remember, that gives a warning an not an error.
The clients' code already has >400 warnings^[edit: fixed wrong word] on every build.
They won't care
QSqlErrorin my functions and point the user toQSqlErrordocumentation in QtF1at any time in Qt Creator to get the help pageboolreturn value (I am sitting 10m away in the same room as the client. Senior management is in another state)F1on their computer and show the userbool QSqlError::isValid()boolresult.isValid()in anifstatement.booldeleteDocumentfunction is deleting the document but returning false.Yes, they called
deleteDocumenton the same ID twice.BTW, I did create a manual with usage examples.
A few months later, a senior engineer on the client side checks their code and tells me to
throwexceptions for everything, because half of the time, the user-devs are not checking theQSqlErrorreturn values.From what I remember, that gives a warning an not an error.
The clients' code already has >400 warnings^[edit: fixed wrong word] on every build. They won't care
Yeah,
[[nodiscard]]throws a warning (that's half the point of attributes, anyway).