mirror of
https://github.com/restoreddev/phpapprentice.git
synced 2025-07-16 21:01:17 +02:00
Added new exceptions page
This commit is contained in:
@@ -22,6 +22,7 @@
|
|||||||
<li><a href="<?= page_path('static') ?>">Static</a></li>
|
<li><a href="<?= page_path('static') ?>">Static</a></li>
|
||||||
<li><a href="<?= page_path('interfaces') ?>">Interfaces</a></li>
|
<li><a href="<?= page_path('interfaces') ?>">Interfaces</a></li>
|
||||||
<li><a href="<?= page_path('abstract') ?>">Abstract Classes</a></li>
|
<li><a href="<?= page_path('abstract') ?>">Abstract Classes</a></li>
|
||||||
|
<li><a href="<?= page_path('exceptions') ?>">Exceptions</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
<a href="<?= page_path('credits') ?>">Credits</a>
|
<a href="<?= page_path('credits') ?>">Credits</a>
|
||||||
</div>
|
</div>
|
||||||
|
60
code/exceptions.php
Normal file
60
code/exceptions.php
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Sometimes things go wrong when someone uses your code. How do we handle this situation?
|
||||||
|
// PHP has Exceptions to define errors and the ability to "throw" them to stop code
|
||||||
|
// execution and tell the user of your code that something is wrong.
|
||||||
|
class Processor
|
||||||
|
{
|
||||||
|
public function charge($creditCard)
|
||||||
|
{
|
||||||
|
if (strlen($creditCard->getNumber()) !== 16) {
|
||||||
|
throw new Exception('Credit card is not right');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// In this case, if someone tried to use the Processor class
|
||||||
|
// to charge a credit card number that is not 16 characters long, an
|
||||||
|
// exception will be thrown which stops the rest of the code from running.
|
||||||
|
$processor = new Processor();
|
||||||
|
$processor->charge('1234');
|
||||||
|
|
||||||
|
// A developer who wants to prevent an exception from stopping code execution
|
||||||
|
// can catch the exception and use it for logging or a return an error to a user.
|
||||||
|
|
||||||
|
// Just wrap the code that might throw an exception with the keyword "try" and brackets
|
||||||
|
// followed by "catch", the exception type in parentheses and more brackets.
|
||||||
|
try {
|
||||||
|
$processor->charge('1234');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo $e->getMessage() . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can make your own custom exceptions as well. They are just classes
|
||||||
|
// that extend Exception.
|
||||||
|
class MyCustomException extends Exception {}
|
||||||
|
|
||||||
|
// Then, you can try to catch your exception instead of the base exception.
|
||||||
|
try {
|
||||||
|
throw new MyCustomException('I am a custom exception');
|
||||||
|
} catch (MyCustomException $e) {
|
||||||
|
echo "Cauth MyCustomException\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Since all exceptions inherit from Exception, catching
|
||||||
|
// Exception will catch any and all exceptions that might be thrown.
|
||||||
|
try {
|
||||||
|
throw new MyCustomException('I inherit from Exception');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo "Still caught MyCustomException\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can also create multiple catch blocks to handle different types of exceptions in
|
||||||
|
// one try-catch.
|
||||||
|
try {
|
||||||
|
throw new MyCustomException('I am being thrown again');
|
||||||
|
} catch (MyCustomException $e) {
|
||||||
|
echo "MyCustomException was caught\n";
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo "Just in case a different exception is thrown\n";
|
||||||
|
}
|
@@ -146,7 +146,13 @@ return [
|
|||||||
Page::create('abstract', null, 'abstract.php', [
|
Page::create('abstract', null, 'abstract.php', [
|
||||||
'title' => 'Abstract Classes',
|
'title' => 'Abstract Classes',
|
||||||
'subtitle' => 'Inheriting an interface',
|
'subtitle' => 'Inheriting an interface',
|
||||||
'previous' => 'interfaces',
|
'previous' => 'interface',
|
||||||
|
'next' => 'exceptions',
|
||||||
|
]),
|
||||||
|
Page::create('exceptions', null, 'exceptions.php', [
|
||||||
|
'title' => 'Exceptions',
|
||||||
|
'subtitle' => 'Throwing errors',
|
||||||
|
'previous' => 'abstract',
|
||||||
'next' => '',
|
'next' => '',
|
||||||
]),
|
]),
|
||||||
],
|
],
|
||||||
|
Reference in New Issue
Block a user