some common places to look are file / (is it possible your code will try to read file that doesn' exist?)mathematical expressions (is it possible that value you are dividing by is zero?)list indices (is the list empty?)and dictionaries (does the key exist?ask yourself if you should ignore the problemhandle it by checking values firstor handle it with an exception pay special attention to areas where you might have used finally and else to ensure the correct code is executed under all conditions now write some new code think of program that requires authentication and authorizationand try writing some code that uses the auth module we built in the case study feel free to modify the module if it' not flexible enough try to handle all the exceptions in sensible way if you're having trouble coming up with something that requires authenticationtry adding authorization to the notepad example from objects in pythonor add authorization to the auth module itself--it' not terribly useful module if just anybody can start adding permissionsmaybe require an administrator username and password before allowing privileges to be added or changed finallytry to think of places in your code where you can raise exceptions it can be in code you've written or are working onor you can write new project as an exercise you'll probably have the best luck for designing small framework or api that is meant to be used by other peopleexceptions are terrific communication tool between your code and someone else' remember to design and document any self-raised exceptions as part of the apior they won' know whether or how to handle themsummary in this we went into the gritty details of raisinghandlingdefiningand manipulating exceptions exceptions are powerful way to communicate unusual circumstances or error conditions without requiring calling function to explicitly check return values there are many built-in exceptions and raising them is trivially easy there are several different syntaxes for handling different exception events in the next everything we've studied so far will come together as we discuss how object-oriented programming principles and structures should best be applied in python applications