Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Using try/catch Blocks for Safe Execution | Understanding PHP Errors and Basic Exception Handling
PHP Error Handling and Exceptions

bookUsing try/catch Blocks for Safe Execution

Veeg om het menu te tonen

When working with PHP, you may encounter situations where something goes wrong—such as invalid input, failed file operations, or unexpected values. To prevent your program from crashing and to give you a way to respond to these problems, PHP provides try/catch blocks. These blocks let you run code that might fail inside a "try" section, and then "catch" any exceptions that are thrown, allowing you to handle them gracefully. This approach is essential for building robust PHP applications that can recover from errors or provide helpful feedback to users instead of displaying confusing error messages or stopping unexpectedly.

index.php

index.php

copy
123456789101112131415
<?php function divide($a, $b) { if ($b === 0) { throw new Exception("Cannot divide by zero."); } return $a / $b; } try { $result = divide(10, 0); echo "Result: $result"; } catch (Exception $e) { echo "Oops! " . $e->getMessage(); }

In the example above, you see a function called divide that takes two arguments. If the second argument is zero, it throws an Exception with the message "Cannot divide by zero." The code that calls divide is placed inside a try block. This means PHP will attempt to execute that code, but if an exception is thrown, it will immediately stop running the rest of the try block and move to the catch block. The catch block receives the thrown exception as an object ($e). Inside the catch block, you can access information about the exception, such as its message, and respond appropriately—in this case, by displaying a user-friendly message. This structure prevents the program from crashing and gives you control over how to handle errors.

multiple_catch_example.php

multiple_catch_example.php

copy
12345678910111213141516171819
<?php class FileException extends Exception {} class DataException extends Exception {} try { // Some code that might throw different exceptions throw new FileException("File not found."); } catch (FileException $fe) { // Handle file-related errors echo "File problem: " . $fe->getMessage(); } catch (DataException $de) { // Handle data-related errors echo "Data problem: " . $de->getMessage(); } catch (Exception $e) { // Handle any other type of exception echo "General error: " . $e->getMessage(); }

Using multiple catch blocks lets you handle different types of exceptions in different ways. In this example, if a FileException is thrown, the first catch block runs. If a DataException is thrown, the second one runs. If any other type of Exception is thrown, the final catch block handles it. This approach makes your error handling more flexible and precise, allowing you to provide specific responses for different problems.

When using try/catch blocks, keep these best practices in mind:

  • Catch exceptions only when you can handle them or provide meaningful feedback;
  • Avoid catching exceptions just to suppress errors—always log or address the issue appropriately;
  • Do not overuse try/catch for normal control flow—exceptions are meant for truly exceptional situations;
  • Be as specific as possible in your catch blocks, handling different exception types separately when needed.

By following these guidelines, you can make your code safer, easier to debug, and more user-friendly.

Note
Study More

Study more: Read the official PHP documentation on Exceptions and try/catch to explore more about exception hierarchy and advanced usage.

1. What happens if an exception is not caught in a try/catch block?

2. Which part of the try/catch block contains the code that might throw an exception?

question mark

What happens if an exception is not caught in a try/catch block?

Select the correct answer

question mark

Which part of the try/catch block contains the code that might throw an exception?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 1. Hoofdstuk 3
some-alt