Error checking - use a chain of if-else or a single try-catch

I saw this thread over in the PHP forum, and got thinking since I’ve been guilty of both using a lot of if-else statements for error checking, and just an enclosing try-catch. Where do you draw the line about checking for errors and having too many checks for errors?

A lot can go wrong with opening/reading/writing a file, but most of the code is dedicated to performing that operation, so should you have a chain of if-else statement at the points where things can go wrong, or a catch-all try-catch block?

How do you decide whether a chain of if-else statements is more appropriate than a try-catch? (beyond simple laziness or time constraints)

I would say 90%+ of my error checking code would be validating form data in a php script.

In this situation I normally use a series of IF statements to validate each form input using a form validator class

A typical scenario after checking if the inputs are set or empty would be along these lines

$fName = $_POST['txtFname'];
$lName = $_POST['txtLname'];
$email  = $_POST['txtEmail'];
$formChecker = new $FormValidator();
$errors = array();
if(!$formChecker->isFirstName($fName)) {
     $errors[] = 'txtFname';
if(!$formChecker->isLastName($lName)) {
     $errors[] = 'txtLname';
if(!$formChecker->isEmailAddress($email)) {
     $errors[] = 'txtEmail';
if($count($errors) > 0) {
     //redirect back to form page and highlight inputs with errors

Validation is a given.

I was more interested about basic operations like connecting to a database, reading/writing to files, accessing external APIs, etc.