Photo by jesse orrico on Unsplash
Code Smell 166 - Low-Level Errors on User Interface
Fatal error: Uncaught Error: Class 'logs_queries' not found in /var/www/html/query-line.php:78 Stack trace: #0 {main} thrown in /var/www/html/query
TL;DR: Catch your errors. Even the ones you don't expect.
Problems
Security
Error Handling
Error Logging
Bad UX Experience
Solutions
Use a top-level handler
Avoid languages favoring return codes
Expect database and low-level errors
Context
Even in 2022, we can see "serious" websites showing casual users a stack or debugging message.
Sample Code
Wrong
<?
Fatal error: Uncaught Error: Class 'MyClass' not found
in /nstest/src/Container.php:9
Right
<?
// A user-defined exception handler function
function myException($exception) {
logError($exception->description())
// We don't show Exception to final users
}
// Set user-defined exception handler function
set_exception_handler("myException");
Detection
[X] Automatic
We can use mutation testing to simulate problems and see if they are handled correctly.
Tags
- Security
Conclusion
We need to keep maturing.
Our solutions shouldn't be sloppy.
We need to improve our reputation as serious software engineers.
Relations
More Info
Disclaimer
Code Smells are just my opinion.
Credits
Photo by jesse orrico on Unsplash
80 percent of my problems are simple logic errors. 80 percent of the remaining problems are pointer errors. The remaining problems are hard.
Mark Donner
This article is part of the CodeSmell Series.