If something at face value appears to have only happy cases then the developer does not have the scope to understand what are the edge cases or they might simply be blinded by the implementation of whatever said thing is.
I believe that developers spend too much time or emphasis on the happy case of something, instead, they should work on flipping that mental model around and spend more time trying to identify what the edge cases are and account for those instead because in my experience, the more control flow statements introduced into a piece of software the higher the number of edge cases there will be.
This same model of approaching software design can be applied to just about anything in life, there is always an edge case to something and if you cannot see it now then it will eventually appear later down the line. One's capacity to identify edge cases comes with experience.
It is a bit negative to walk in the world and see the negatives of everything in this life but it is up to you to utilize it as a tool at the end of the day.