Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I declare that a php function throws an exception?

Can I declare a function in php that throws an exception? For example:

public function read($b, $off, $len) throws IOException 
like image 498
shay Avatar asked Jul 24 '10 13:07

shay


People also ask

How can I create exception in PHP?

To create a custom exception handler you must create a special class with functions that can be called when an exception occurs in PHP. The class must be an extension of the exception class. The custom exception class inherits the properties from PHP's exception class and you can add custom functions to it.

Can a function throw exception?

The throw keyword in Java is used for explicitly throwing a single exception. This can be from within a method or any block of code. Both checked and unchecked exceptions can be thrown using the throw keyword.

What is throw exception PHP?

Throw: The throw keyword is used to signal the occurrence of a PHP exception. The PHP runtime will then try to find a catch statement to handle the exception. Catch: This block of code will be called only if an exception occurs within the try code block.

Can you throw an array instead of a string as an exception in PHP?

Yes, you can.


3 Answers

You can use @throws in the PHPDoc comment, and the IDE will recognize this function as throwing an exception, when viewing the doc, however unlike Java it will not force you to implement the Try{}catch block. Maybe future versions of the IDE (I am using InteliJ 11) will mark those places where try{}catch is expected, that same as it already do with the JavaScript types marked by doc (e.g. String}) when recognizing inconsistency.

In short, using Doclet like when codding with scripting languages (PHP, JavaScript..), is turn to be complementary tool for safer programming in the case of non type-safe and non compiled languages.

like this:

enter code here
/**
 * Handle 'get' operations
 * @abstract
 * @param int $status reference for setting the response status
 * @param String $body reference for setting the response data
 * @return mixed
 * @throws Exception if operation fail
 */
function get(&$status, &$body) {
}

enter image description here

like image 190
Gilad Avatar answered Oct 05 '22 01:10

Gilad


I misread the question, see the answer below from Gilad (which should be accepted).

Previous answer:

You could throw a new exception from the body of the function. It's all described here

Example:

<?php
function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    else return 1/$x;
}

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo 'Hello World';
?>
like image 45
Lee Jarvis Avatar answered Oct 05 '22 02:10

Lee Jarvis


For a list of exceptions that come with the SPL: SPL Exceptions.

If you want to create your own exception:

From the PHP Exceptions page:

The thrown object must be an instance of the Exception Class or a subclass of Exception. Trying to throw an object that is not will result in a PHP Fatal Error.

So yes, it is possible to create your own exceptions. Just a bit of reading will help you achieve what you want.

like image 45
Jim Avatar answered Oct 05 '22 00:10

Jim