PHP try catch finally example

In this article, you will learn how to use PHP try catch finally blocks.

How to Implement Try Catch Finally Blocks in PHP?

Here are

  • Syntax of try-catch-finally block in PHP
  • Example 1: Using a try-catch-finally block to open and close a file
  • Example 2: Using a try-catch-finally block to connect to a database
  • Example 3: Using a try-catch-finally block to delete a file
  • Example 4: Using try-catch-finally blocks to handle exceptions
  • Example 5: Using a custom exception class
  • Example 6: Rethrowing an exception
  • Example 7: Catching Multiple Exceptions

Syntax of try-catch-finally block in PHP

The try-catch-finally block in PHP has the following syntax:

try {
  //code that may cause an exception
}
catch(Exception $e) {
  //code to handle the exception
}
finally {
  //code to be executed after the try-catch block
}

In the above syntax, the try block contains the code that may throw an exception. If an exception is thrown, the catch block catches the exception and handles it. The finally block contains the code to be executed after the try-catch block, regardless of whether an exception was thrown or not.

Example 1: Using a try-catch-finally block to open and close a file

The following example demonstrates how to use a try-catch-finally block to open and close a file:

<?php
try {
  $file = fopen("example.txt", "r");
  //code to read from the file
}
catch(Exception $e) {
  echo "Error: " . $e->getMessage();
}
finally {
  fclose($file);
}
?>

In example 1, you attempt to open a file called example.txt using the fopen() function. If an exception is thrown while opening the file using the above given code, Then catch block catches the exception and displays an error message on web page. The finally block closes the file using the fclose() function, regardless of whether an exception was thrown or not.

Example 2: Using a try-catch-finally block to connect to a database

The following example demonstrates how to use a try-catch-finally block to connect to a database:

<?php
try {
  $conn = new PDO("mysql:host=localhost;dbname=test", "username", "password");
  //code to execute SQL queries
}
catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}
finally {
  $conn = null;
}
?>

In the above code, you attempt to connect to a database using the PDO() constructor. If an exception is thrown while connecting to the database, the catch block catches the exception and displays an error message. The finally statement closes the database connection using the null assignment operator, regardless of whether an exception was thrown or not.

Example 3: Using a try-catch-finally block to delete a file

The following example demonstrates how to use a try-catch-finally block to delete a file:

<?php
try {
  unlink("example.txt");
}
catch(Exception $e) {
  echo "Error: " . $e->getMessage();
}
finally {
  //code to be executed after the try-catch block
}
?>

In the above code, you attempt to delete a file called example.txt using the unlink() function. If an exception is thrown while deleting the file, the catch block catches the exception and displays an error message. The finally block contains no code to be executed after the try-catch block.

Example 4: Using try-catch-finally blocks to handle exceptions

The following example demonstrates how to use a try-catch-finally block to handle an exception:

<?php
try {
  $result = 10 / 0;
}
catch(Exception $e) {
  echo "Error: " . $e->getMessage();
}
finally {
  echo "The code in the finally block is always executed.";
}
?>

Output: Error: Division by zero

The code in the finally statement is always executed.

In the above code, you attempt to divide the number 10 by zero, which is not allowed in PHP and will throw an exception. The catch block catches the exception and displays an error message using the getMessage() method of the Exception object. The finally block contains the code that should be executed regardless of whether an exception is thrown or not.

Example 5: Using a custom exception class

class CustomException extends Exception {}

try {
    // some code that may throw a CustomException
}
catch (CustomException $e) {
    // handle the CustomException
}
finally {
    // code that will be executed regardless of whether an exception was thrown or not
}

In this example, you define a custom exception class called CustomException that extends the Exception class. The catch block catches the CustomException and handles it.

Example 6: Rethrowing an exception

try {
    // some code that may throw an exception
}
catch (Exception $e) {
    // handle the exception
    throw $e;
}
finally {
    // code that will be executed regardless of whether an exception was thrown or not
}

In this example, the catch block handles the exception and then rethrows it using the throw keyword. This permits the errors to be caught by another catch statement further up the call stack.

Example 7: Catching Multiple Exceptions

try {
  //code that may cause an exception
}
catch(DivisionByZeroError $e) {
  //code to handle a division by zero exception
}
catch(FileNotFoundException $e) {
  //code to handle a file not found exception
}
catch(Exception $e) {
  //code to handle any other exception
}
finally {
  echo "Finally block executed.";
}

In this example, You have three catch blocks to handle different types of exceptions. If a division by zero exception is thrown, the first catch block will handle it. If a file not found exception is thrown, the second catch block will handle it. If any other type of exception is thrown, the third catch block will handle it. The finally block is executed regardless of whether an exception is thrown or not.

Conclusion

In this article, you have learned how to use of try-catch-finally blocks in PHP with examples. You have seen how to handle errors that may happen during the execution of a block of code and how to run a block of code after the try-catch block, regardless of whether an error was thrown or not. By using try-catch-finally blocks in your PHP code, you can ensure that your

Recommended PHP Tutorials

AuthorDevendra Dode

Greetings, I'm Devendra Dode, a full-stack developer, entrepreneur, and the proud owner of Tutsmake.com. My passion lies in crafting informative tutorials and offering valuable tips to assist fellow developers on their coding journey. Within my content, I cover a spectrum of technologies, including PHP, Python, JavaScript, jQuery, Laravel, Livewire, CodeIgniter, Node.js, Express.js, Vue.js, Angular.js, React.js, MySQL, MongoDB, REST APIs, Windows, XAMPP, Linux, Ubuntu, Amazon AWS, Composer, SEO, WordPress, SSL, and Bootstrap. Whether you're starting out or looking for advanced examples, I provide step-by-step guides and practical demonstrations to make your learning experience seamless. Let's explore the diverse realms of coding together.

Leave a Reply

Your email address will not be published. Required fields are marked *