Laravel Tutorials

Laravel throw_if and throw_unless Helpers

Published
Laravel throw_if and throw_unless Helpers image

Coming to Laravel 5.5 is two new helper methods named throw_if and throw_unless, and both are designed to make it easier to throw exceptions.

“Just like all the helpers, throw_if and throw_unless help facilitate clean and expressive code,” TJ Miller said, “In particular, these two helpers could often reduce a conditional block to a single line of code. That’s pretty z.”

Let’s take a look at these helpers and demonstrate how they work:

throw_if

Throw if, does exactly as it says. If the first param is a boolean and it’s “true,” then throw an exception.

Here is an example use case:

$foo = true;
throw_if($foo, new BarException('Foo is true'));
// or
throw_if($foo, BarException::class, 'Foo is true');

Here is the complete function for reference:

function throw_if($boolean, $exception, $message = '')
{
if ($boolean) {
throw (is_string($exception) ? new $exception($message) : $exception);
}
}

throw_unless

The reverse of throw_if is throw_unless and it performs exactly the same except it checks that the first param is false and then throws an exception:

$foo = false;
throw_unless($foo, new BarException('Foo is false'));
// or
throw_unless($foo, BarException::class, 'Foo is false');

And it’s complete signature:

function throw_unless($boolean, $exception, $message)
{
if (! $boolean) {
throw (is_string($exception) ? new $exception($message) : $exception);
}
}

These two helpers will be available with the 5.5 release which is due out in July and be sure to join the weekly Laravel Newsletter, so you’ll get notified as soon as it is officially released.

Eric L. Barnes photo

Eric is the creator of Laravel News and has been covering Laravel since 2012.

Sponsored

tinkerwell logo
Tinkerwell

Enjoy coding and debugging in an editor designed for fast feedback and quick iterations. It's like a shell for your application – but with multi-line editing, code completion, and more.

Visit Tinkerwell

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article