Syntax errors occur due to incorrect syntax and terminate the program, while exceptions are raised when code is syntactically correct but results in an error, changing normal program flow without terminating. Try and except statements are used to catch and handle exceptions in Python by keeping exception-raising code in the try clause and exception handling code in except clauses, and can specify different handlers for different exceptions. The else clause runs if no exceptions occur in the try block.