Bird
Raised Fist0
Svelteframework~10 mins

Error pages (+error.svelte) - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Error pages (+error.svelte)
User requests page
↓
Page loads successfully?
No→Error occurs
↓
+error.svelte loads
↓
Show page content
↓
Display error message
↓
User sees error page
When a page fails to load, SvelteKit shows the +error.svelte component to display a friendly error message.
Execution Sample
Svelte
<script>
  export let error;
  export let status;
</script>
<h1>{status}</h1>
<p>{error.message}</p>
This +error.svelte component shows the error status and message when a page fails.
Execution Table
StepActionInput/ErrorComponent StateOutput Rendered
1User requests /missing-pageNo page found (404)error.message='Not Found', status=404Render +error.svelte with 404 and 'Not Found'
2+error.svelte receives propserror.message='Not Found', status=404error and status set<h1>404</h1><p>Not Found</p>
3User sees error pageRendered HTMLStatic error page shownUser sees '404' and 'Not Found' message
4User requests /server-errorServer error (500)error.message='Internal Server Error', status=500Render +error.svelte with 500 and message
5+error.svelte receives propserror.message='Internal Server Error', status=500error and status set<h1>500</h1><p>Internal Server Error</p>
6User sees error pageRendered HTMLStatic error page shownUser sees '500' and 'Internal Server Error' message
7User requests /valid-pagePage loads OKNo errorPage content rendered, +error.svelte not used
8EndNo errorNo error stateNormal page shown, no error page
💡 Execution stops when page loads successfully or error page is shown for failure.
Variable Tracker
VariableStartAfter Step 1After Step 4After Step 7Final
error.messageundefined'Not Found''Internal Server Error'undefinedundefined
statusundefined404500undefinedundefined
Key Moments - 2 Insights
Why does +error.svelte show different messages?
Because it receives the error and status from the failed page load, as shown in execution_table rows 1 and 4.
When is +error.svelte NOT used?
When the page loads successfully without errors, like in execution_table row 7, the normal page content shows instead.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of status at step 2?
A404
B500
Cundefined
D200
💡 Hint
Check the 'Component State' column at step 2 in the execution_table.
At which step does the user see the 'Internal Server Error' message?
AStep 3
BStep 6
CStep 5
DStep 7
💡 Hint
Look for the 'Output Rendered' column mentioning 'Internal Server Error' in the execution_table.
If the page loads successfully, what happens to the error variables?
AThey keep their last error values
BThey show default error messages
CThey become undefined
DThey cause +error.svelte to render anyway
💡 Hint
See variable_tracker values after step 7 and final column.
Concept Snapshot
In SvelteKit, +error.svelte shows error pages.
It receives 'error' and 'status' props.
Displays error status code and message.
Used only when a page load fails.
Otherwise, normal page content shows.
Customize +error.svelte to style error pages.
Full Transcript
When a user requests a page, SvelteKit tries to load it. If the page loads successfully, the normal content shows. If there is an error, like a 404 or 500, SvelteKit uses the +error.svelte component. This component receives two pieces of information: the error object and the status code. It then displays these to the user, for example showing '404' and 'Not Found' for a missing page. The execution table shows step-by-step how the error page is rendered and what the user sees. Variables like error.message and status change only when an error occurs. When the page loads fine, these variables are undefined and +error.svelte is not used. This helps users understand what went wrong in a friendly way. You can customize +error.svelte to change how error pages look and what they say.

Practice

(1/5)
1. What is the main purpose of the +error.svelte file in a SvelteKit project?
easy
A. To handle user authentication
B. To display a custom error page when an error occurs in the app
C. To define global styles for the app
D. To manage routing between pages

Solution

  1. Step 1: Understand the role of +error.svelte

    This file is specifically designed to show error messages when something goes wrong in the app.
  2. Step 2: Compare with other options

    Authentication, styling, and routing are handled elsewhere, not in +error.svelte.
  3. Final Answer:

    To display a custom error page when an error occurs in the app -> Option B
  4. Quick Check:

    Error page = +error.svelte [OK]
Hint: Remember: +error.svelte shows errors, not routes or styles [OK]
Common Mistakes:
  • Confusing error page with routing or styling files
  • Thinking +error.svelte handles authentication
  • Assuming it is for normal page content
2. Which of the following is the correct way to access the HTTP status code inside +error.svelte?
easy
A. {error.status}
B. {params.status}
C. {error.message}
D. {status}

Solution

  1. Step 1: Recall SvelteKit error props

    In +error.svelte, the status is passed as a separate prop, not inside error.
  2. Step 2: Check each option

    {error.status} is incorrect because error holds the error object, but status is separate. {status} is correct. {error.message} is for the message, not status. {params.status} is unrelated.
  3. Final Answer:

    {status} -> Option D
  4. Quick Check:

    Status code = {status} [OK]
Hint: Status is a separate prop, not inside error object [OK]
Common Mistakes:
  • Using {error.status} instead of {status}
  • Confusing error message with status code
  • Trying to access status from params
3. Given this +error.svelte snippet:
<script>
  export let error;
  export let status;
</script>

<h1>Error {status}</h1>
<p>{error.message}</p>

What will be displayed if status is 404 and error.message is "Page not found"?
medium
A. Error 404
Page not found
B. Error Page not found
404
C. Error 0
undefined
D. Error 404
undefined

Solution

  1. Step 1: Substitute values in template

    The {status} is 404, so <h1> shows "Error 404". The {error.message} is "Page not found", so <p> shows that text.
  2. Step 2: Confirm output matches option

    Error 404
    Page not found matches exactly: "Error 404" and "Page not found". Others have wrong order or undefined values.
  3. Final Answer:

    Error 404
    Page not found
    -> Option A
  4. Quick Check:

    Display status and message correctly [OK]
Hint: Match variable names exactly to output text [OK]
Common Mistakes:
  • Mixing status and message order
  • Assuming undefined values
  • Confusing error.message with status
4. You wrote this +error.svelte code:
<script>
  export let error;
</script>

<h1>Error {status}</h1>
<p>{error.message}</p>

But when an error occurs, the page shows Error undefined. What is the problem?
medium
A. You need to import status from another file
B. You should use {error.status} instead of {status}
C. You forgot to export the status prop
D. The error object does not have a message property

Solution

  1. Step 1: Identify missing prop export

    The code uses {status} but does not export status from the script, so it is undefined.
  2. Step 2: Check other options

    {error.status} is incorrect because status is a separate prop. Importing status is not needed. error.message exists, so that is not the issue.
  3. Final Answer:

    You forgot to export the status prop -> Option C
  4. Quick Check:

    Export all props used in template [OK]
Hint: Always export props you use in template [OK]
Common Mistakes:
  • Using {status} without exporting it
  • Trying to access status inside error object
  • Assuming error.message is missing
5. You want to create a custom error page that shows a special message for 404 errors and a generic message for others. Which +error.svelte code correctly implements this?
hard
A.
<script>
  export let error;
  export let status;
</script>

<h1>Error {status}</h1>
<p>{status === 404 ? 'Page not found' : error.message}</p>
B.
<script>
  export let error;
</script>

<h1>Error {error.status}</h1>
<p>{error.message === 404 ? 'Page not found' : error.message}</p>
C.
<script>
  export let error;
  export let status;
</script>

<h1>Error {status}</h1>
<p>{error.message === 404 ? 'Page not found' : error.message}</p>
D.
<script>
  export let error;
  export let status;
</script>

<h1>Error {status}</h1>
<p>{status === '404' ? 'Page not found' : error.message}</p>

Solution

  1. Step 1: Check how status is used

    Status is a number, so comparing status === 404 is correct.
    <script>
      export let error;
      export let status;
    </script>
    
    <h1>Error {status}</h1>
    <p>{status === 404 ? 'Page not found' : error.message}</p>
    and D do this, but D compares to string '404' which is wrong.
  2. Step 2: Check error.message usage

    <script>
      export let error;
      export let status;
    </script>
    
    <h1>Error {status}</h1>
    <p>{status === 404 ? 'Page not found' : error.message}</p>
    uses error.message as fallback, which is correct. Options B and C incorrectly compare error.message to 404, which makes no sense.
  3. Step 3: Confirm correct syntax and logic

    <script>
      export let error;
      export let status;
    </script>
    
    <h1>Error {status}</h1>
    <p>{status === 404 ? 'Page not found' : error.message}</p>
    correctly exports both props and uses a ternary to show special message for 404, else shows error.message.
  4. Final Answer:

    Option A code correctly handles 404 and other errors -> Option A
  5. Quick Check:

    Compare status number, not error.message [OK]
Hint: Compare status number with 404, not error.message [OK]
Common Mistakes:
  • Comparing error.message to 404 instead of status
  • Comparing status to string '404' instead of number
  • Not exporting both status and error props
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