At runtime, PHP actually compiles the entire script. Then, if there are no parsing/compiling errors, it begins execution of the script from the compilation result (which is in real or virtual memory only until no longer needed). Therefore, there are two general types of errors you can encounter: those which occur during the parse/compile phase (such as syntax errors) and those that occur during the execution phase (such as memory usage errors resulting from infinite loops).
Fatal parse/compile errors will prevent script execution and nothing in it will actually get processed. Runtime errors may kill the script at the moment they occur, or simply throw a warning or notice, depending on the type of error. You can use the set_error_handler function to define your own error-handling of runtime (not compile time) errors which are not of the following types: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT.