Syntax errors are detected when we have not followed the rules of the particular programming language while writing a program. These errors are also known as parsing errors. On encountering a syntax error, the interpreter does not execute the program unless we rectify the errors, save and rerun the program. When a syntax error is encountered while working in shell mode, Python displays the name of the error and a small description about the error as shown in Figure.
A syntax error displayed in Python shell mode

So, a syntax error is reported by the Python interpreter giving a brief explanation about the error and a suggestion to rectify it.
Similarly, when a syntax error is encountered while running a program in script mode as shown in Figure.
An error in the script

a dialog box specifying the name of the error (Figure.) and a small description about the error is displayed.
Error dialog box

Exceptions
Even if a statement or expression is syntactically correct, there might arise an error during its execution. For example, trying to open a file that does not exist, division by zero and so on. Such types of errors might disrupt the normal execution of the program and are called exceptions.
An exception is a Python object that represents an error. When an error occurs during the execution of a program, an exception is said to have been raised. Such an exception needs to be handled by the programmer so that the program does not terminate abnormally. Therefore, while designing a program, a programmer may anticipate such erroneous situations that may arise during its execution and can address them by including appropriate code to handle that exception.
It is to be noted that SyntaxError shown at An error in the script Figures and Error dialog box Figures is also an exception. But, all other exceptions are generated when a program is syntactically correct.