Sobes.tech
Middle+

How to handle both Error and Exception in try-catch? What is Throwable? What is the difference between Error and Exception?

sobes.tech AI

Answer from AI

In PHP starting from version 7, all errors and exceptions are implemented through a class hierarchy, with the root being the Throwable interface. This allows catching both exceptions (Exception) and errors (Error) in try-catch blocks.

  • Throwable is the base interface for all objects that can be thrown via throw.
  • Exception is a class for exceptions that can be handled and are usually related to errors in the application logic.
  • Error is a class for fatal errors that were previously uncatchable (e.g., parsing errors, memory errors).

To handle both Error and Exception, you can use multiple catch blocks or a single block catching Throwable:

try {
    // code that may throw an exception or error
} catch (Exception $e) {
    // handle exceptions
} catch (Error $e) {
    // handle errors
}

// or

try {
    // code
} catch (Throwable $t) {
    // handle both errors and exceptions
}

The difference between Error and Exception is that Exception is intended for situations that can be foreseen and handled (e.g., invalid data, missing file), while Error is for serious problems related to the environment or PHP engine itself, which usually mean that the program cannot continue running normally.