Guide to Standardized Hooks - Exceptions

Introduction

The Standardized Hooks System honors exceptions in hook action code or in check actions. The use of exceptions is commonplace for many developers. 

  • When hook action code, or the check action in a blocking event, raises an exception, the dispatch loop will halt iteration, log the exception to the /usr/local/cpanel/logs/error_log file, and proceed to iterate through any rollback actions.
  • When a non-blocking event raises an exception, the dispatch loop will log the exception, but continue to iterate through any remaining hook actions.

Exceptions in Perl modules

In Perl code, you can use any Perl function that normally raises an exception (for example,  die() ). The message body must contain the term BAILOUT .

Exceptions in scripts

Different scripting languages have different implementations of exceptions. To raise an exception in a script, the script must print  BAILOUT  toSTDOUT and exit.

Examples

The following sections illustrate how to raise an exception that will print  Could not connect to remote server  in the error log.

The following example Perl code includes an exception:

1
2
3
4
5
6
7
8
# Perl Module Example sub my_hook {
    my ($context$dataset) = @_;
    my $conn = AwesomeServer->connect($user$pass$whatever);
    if (!$conn) {
        die "BAILOUT Could not connect to remote server";
    }
    #...     return 1;
}

The following example script includes an exception:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// PHP Script Example function my_hook($context, $dataset){
    try {
        $result = _hook($context$dataset);
        $msg = ($result)? "Hook succeeded" "Hook failed";
        echo "$result $msg";
    }
    catch(Exception $e) {
        echo $e->getMessage();
        exit;
    }
}
function _hook($context$dataset) {
    my $conn = AwesomeServer->connect($user$pass$whatever);
    if (!$conn) {
        throw new RuntimeException("BAILOUT Could not connect to remote server");
    }
    #...
    return 1;
}
  • 12 Users Found This Useful
Was this answer helpful?

Related Articles

The cPanel Interface

For  cPanel  &  WHM  version  58 Overview The cPanel interface is...

User Preferences

For cPanel & WHM version 58 Overview This document outlines how to access your cPanel...

Manage External Authentications

For cPanel & WHM version 58 Overview Manage credentials Additional documentation...

What is cPanelID?

In This Article:  Overview ServicesHow to get a cPanelID cPanelID External...

Guide to cPanel Interface Customization - cPanel Style Development

Introduction You can develop custom styles that modify the appearance of the cPanel interface....