Arm interview question

How does a compiler work? Which are its components? When do you use exceptions and when do you use assertions?