Bird
Raised Fist0
PHPprogramming~10 mins

PHP error types and levels - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - PHP error types and levels
Start PHP script
↓
Code runs
↓
Error occurs?
No→Script continues
Yes↓
Identify error type
↓
Match error level
↓
Handle error (display/log/ignore)
↓
Script ends or continues
PHP runs code and checks if an error happens. If yes, it finds the error type and level, then handles it accordingly.
Execution Sample
PHP
<?php
// Trigger different error levels
trigger_error("Notice example", E_USER_NOTICE);
trigger_error("Warning example", E_USER_WARNING);
trigger_error("Error example", E_USER_ERROR);
?>
This code triggers three different PHP error levels: notice, warning, and fatal error.
Execution Table
StepActionError Triggered?Error TypeError LevelEffect
1Run trigger_error with E_USER_NOTICEYesUser NoticeE_USER_NOTICENotice message shown, script continues
2Run trigger_error with E_USER_WARNINGYesUser WarningE_USER_WARNINGWarning message shown, script continues
3Run trigger_error with E_USER_ERRORYesUser ErrorE_USER_ERRORFatal error message shown, script stops
4Script tries to continue after fatal errorNo--Script stops, no further execution
💡 Script stops after fatal error (E_USER_ERROR) because it is a critical error level.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
error_triggeredfalsetrue (notice)true (warning)true (fatal error)script stopped
script_statusrunningrunningrunningstoppedstopped
Key Moments - 3 Insights
Why does the script stop after the third error but not after the first two?
Because E_USER_ERROR is a fatal error level that stops script execution, unlike E_USER_NOTICE and E_USER_WARNING which only show messages but allow the script to continue (see execution_table rows 1-3).
Are notices and warnings errors that break the program?
No, notices and warnings inform about issues but do not stop the program. Only fatal errors stop execution (see execution_table rows 1 and 2).
What happens if an error level is not handled?
PHP uses default behavior: notices and warnings show messages, fatal errors stop the script. Custom handlers can change this (not shown here).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what error level causes the script to stop?
AE_USER_NOTICE
BE_USER_ERROR
CE_USER_WARNING
DNo error stops the script
💡 Hint
Check the Effect column in execution_table row 3 where the script stops.
At which step does the script still continue running after an error?
ASteps 1 and 2
BStep 1 only
CStep 3 only
DNo steps, script stops immediately
💡 Hint
Look at script_status in variable_tracker after Step 1 and Step 2.
If the third trigger_error used E_USER_WARNING instead of E_USER_ERROR, what would happen?
AScript would stop immediately at step 1
BScript would stop at step 3
CScript would continue after step 3
DNo error messages would show
💡 Hint
Refer to the Effect column for E_USER_WARNING in execution_table rows 2 and 3.
Concept Snapshot
PHP errors have types and levels:
- Notice (E_USER_NOTICE): minor, script continues
- Warning (E_USER_WARNING): important, script continues
- Fatal Error (E_USER_ERROR): critical, script stops
Use trigger_error() to create errors.
Script stops only on fatal errors.
Full Transcript
PHP runs code and checks for errors. Errors have types like Notice, Warning, and Fatal Error. Notices and Warnings show messages but let the script keep running. Fatal Errors stop the script immediately. The example code triggers one of each error type. The execution table shows the script continues after Notice and Warning but stops after Fatal Error. Variables track if an error happened and if the script is running. Beginners often wonder why some errors stop the script and others don't. The key is the error level. This helps understand how PHP handles problems during execution.

Practice

(1/5)
1. Which PHP error type indicates a problem that stops the script from running?
easy
A. Warning
B. Fatal error
C. Notice
D. Deprecated

Solution

  1. Step 1: Understand PHP error types

    Fatal errors are serious problems that stop the script immediately.
  2. Step 2: Compare with other error types

    Warnings and notices do not stop the script; deprecated warns about old code.
  3. Final Answer:

    Fatal error -> Option B
  4. Quick Check:

    Fatal error = stops script [OK]
Hint: Fatal errors stop scripts immediately, others do not [OK]
Common Mistakes:
  • Confusing warnings with fatal errors
  • Thinking notices stop script execution
  • Mixing deprecated warnings with fatal errors
2. Which of the following is the correct way to set PHP to report all errors except notices?
easy
A. error_reporting(E_ALL & ~E_NOTICE);
B. error_reporting(E_ALL | E_NOTICE);
C. error_reporting(E_ALL & E_NOTICE);
D. error_reporting(E_ALL ^ E_NOTICE);

Solution

  1. Step 1: Understand error_reporting flags

    E_ALL means all errors; ~E_NOTICE means exclude notices using bitwise NOT.
  2. Step 2: Analyze each option

    error_reporting(E_ALL & ~E_NOTICE); uses bitwise AND with NOT (~) to exclude notices correctly.
  3. Final Answer:

    error_reporting(E_ALL & ~E_NOTICE); -> Option A
  4. Quick Check:

    Exclude notices with & ~E_NOTICE [OK]
Hint: Use & ~E_NOTICE to exclude notices from all errors [OK]
Common Mistakes:
  • Using | instead of & ~ to exclude errors
  • Confusing ^ (XOR) with exclusion
  • Using & E_NOTICE which includes only notices
3. What will be the output of this PHP code?
<?php
error_reporting(E_ERROR | E_WARNING);
echo $undefined_variable;
include('missing_file.php');
?>
medium
A. Warning about missing file only
B. Fatal error about missing file
C. Notice about undefined variable and warning about missing file
D. No output, script runs silently

Solution

  1. Step 1: Check error_reporting level

    Only E_ERROR and E_WARNING are reported; notices are not shown.
  2. Step 2: Analyze code behavior

    Undefined variable triggers a notice (not shown). Missing file triggers a warning (shown).
  3. Final Answer:

    Warning about missing file only -> Option A
  4. Quick Check:

    E_WARNING shown, notices hidden [OK]
Hint: Only errors and warnings show; notices are hidden [OK]
Common Mistakes:
  • Expecting notice output when it's excluded
  • Confusing warning with fatal error
  • Thinking script stops on warning
4. Identify the error in this PHP code snippet:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 0);
echo $undefined_var;
?>
medium
A. Errors will be displayed despite display_errors set to 0
B. No errors will be reported because error_reporting is off
C. Syntax error due to missing semicolon
D. Errors are reported but not displayed due to display_errors=0

Solution

  1. Step 1: Understand error_reporting and display_errors

    error_reporting(E_ALL) enables all error reporting; display_errors=0 hides errors from output.
  2. Step 2: Analyze code behavior

    Errors are logged/reported internally but not shown on screen because display_errors is off.
  3. Final Answer:

    Errors are reported but not displayed due to display_errors=0 -> Option D
  4. Quick Check:

    display_errors=0 hides errors, reporting still active [OK]
Hint: display_errors=0 hides errors; error_reporting controls reporting [OK]
Common Mistakes:
  • Thinking errors won't be reported at all
  • Confusing display_errors with error_reporting
  • Assuming syntax error due to missing semicolon
5. You want to show all errors except deprecated warnings during development but hide all errors on the live site. Which code setup achieves this best?
hard
A. error_reporting(E_ALL); ini_set('display_errors', 1);
B. error_reporting(E_ALL & ~E_NOTICE); ini_set('display_errors', 0);
C. if (ENV == 'dev') { error_reporting(E_ALL & ~E_DEPRECATED); ini_set('display_errors', 1); } else { error_reporting(0); ini_set('display_errors', 0); }
D. if (ENV == 'prod') { error_reporting(E_ALL); ini_set('display_errors', 1); } else { error_reporting(0); ini_set('display_errors', 0); }

Solution

  1. Step 1: Understand environment-based error settings

    During development (dev), show all errors except deprecated; on live (prod), hide all errors.
  2. Step 2: Analyze each option

    if (ENV == 'dev') { error_reporting(E_ALL & ~E_DEPRECATED); ini_set('display_errors', 1); } else { error_reporting(0); ini_set('display_errors', 0); } correctly uses error_reporting with exclusion and display_errors on dev, off on live.
  3. Final Answer:

    if (ENV == 'dev') { error_reporting(E_ALL & ~E_DEPRECATED); ini_set('display_errors', 1); } else { error_reporting(0); ini_set('display_errors', 0); } -> Option C
  4. Quick Check:

    Dev shows errors except deprecated; live hides all [OK]
Hint: Use environment check to toggle error reporting and display [OK]
Common Mistakes:
  • Showing errors on live site
  • Not excluding deprecated warnings during dev
  • Confusing environment variable names
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard