errors occur in many cases when the developer makes assumptions that simply aren' true of coursethis includes assumptions about the application userwho probably doesn' care about the extreme level of care you took when crafting your application the user will enter bad data againpython won' know or care that the data is bad and will process it even when your intent was to disallow the bad input python doesn' understand the concepts of good or bad datait simply processes incoming data according to any rules you setwhich means that you must set rules to protect users from themselves python isn' proactive or creative -those qualities exist only in the developer when network error occurs or the user does something unexpectedpython doesn' create solution to fix the problem it only processes code if you don' provide code to handle the errorthe application is likely to fail and crash ungracefully -possibly taking all of the user' data with it of coursethe developer can' anticipate every potential error situationeitherwhich is why most complex applications have errors in them -errors of omissionin this case some developers out there think they can create bulletproof codedespite the absurdity of thinking that such code is even possible smart developers assume that some number of bugs will get through the code-screening processthat nature and users will continue to perform unexpected actionsand that even the smartest developer can' anticipate every possible error condition always assume that your application is subject to errors that will cause exceptionsthat wayyou'll have the mindset required to actually make your application more reliable considering the sources of errors you might be able to divine the potential sources of error in your application by reading tea leavesbut that' hardly an efficient way to do things errors actually fall into well-defined categories that help you predict (to some degreewhen and where they'll occur by thinking about these categories as you work through your applicationyou're far more likely to discover potential errors sources before they occur and cause potential damage the two principle categories are errors that occur at specific time errors that are of specific type the following sections discuss these two categories in greater detail the overall concept is that you need to think about error classifications in order to start finding and fixing potential errors in your application before they become problem