diff --git a/install.php b/install.php
index 1f53ed57ade26cd056ae7c66a7e24dfb782d42dc..dfbce1de8b66c28b7557d5fc1888460744661b51 100644
--- a/install.php
+++ b/install.php
@@ -103,24 +103,28 @@ header('Content-Type: text/html; charset=utf-8');
 
     <div style="float: left; width: 58%;">
         <?php
-            if(! (check_functions() && check_permissions()) ){
-                echo '<p>'.$lang['i_problems'].'</p>';
-                print_errors();
-                print_retry();
-            }elseif(!check_configs()){
-                echo '<p>'.$lang['i_modified'].'</p>';
-                print_errors();
-            }elseif(check_data($_REQUEST['d'])){
-                // check_data has sanitized all input parameters
-                if(!store_data($_REQUEST['d'])){
-                    echo '<p>'.$lang['i_failure'].'</p>';
+            try {
+                if(! (check_functions() && check_permissions()) ){
+                    echo '<p>'.$lang['i_problems'].'</p>';
                     print_errors();
+                    print_retry();
+                }elseif(!check_configs()){
+                    echo '<p>'.$lang['i_modified'].'</p>';
+                    print_errors();
+                }elseif(check_data($_REQUEST['d'])){
+                    // check_data has sanitized all input parameters
+                    if(!store_data($_REQUEST['d'])){
+                        echo '<p>'.$lang['i_failure'].'</p>';
+                        print_errors();
+                    }else{
+                        echo '<p>'.$lang['i_success'].'</p>';
+                    }
                 }else{
-                    echo '<p>'.$lang['i_success'].'</p>';
+                    print_errors();
+                    print_form($_REQUEST['d']);
                 }
-            }else{
-                print_errors();
-                print_form($_REQUEST['d']);
+            } catch (Exception $e) {
+                echo 'Caught exception: ',  $e->getMessage(), "\n";
             }
         ?>
     </div>