Skip to main content

Error Handling in EasyBite

Error handling is an essential feature in EasyBite to gracefully handle unexpected situations in your programs. It ensures that errors are captured, managed, and handled appropriately, allowing the program to continue functioning without crashing.


Types of Errors

EasyBite supports three main types of errors:

  1. Syntax Errors: These errors occur when the code does not follow the language’s syntax rules.
  2. Runtime Errors: These happen when the program is running, often due to invalid operations like dividing by zero or using undefined variables.
  3. Logical Errors: These occur when the program runs without crashing but produces incorrect results due to faulty logic.

Using Try and Capture Blocks

In EasyBite, you can use try and capture blocks to handle errors. The try block contains code that may throw an error, while the capture block is used to handle the error when it occurs.

Syntax:

try
// Code that might cause an error
capture(varname)
// Code to handle the error
// The variable 'varname' captures the error
stop

Example:

try
set result to 10 / 0 // Division by zero
capture(error)
show("Error: " + error) // Prints the captured error
stop

Explanation:

  • In this example, the divide function attempts to divide 10 by 0, which causes a runtime error.
  • The capture(error) block catches the error and prints the error message.

Capturing Specific Errors

You can capture specific types of errors by using the capture(varname) block. The captured error variable can be used to handle different errors differently.

Example:

try
set result to 10 / 0 // Division by zero
capture(ZeroDivisionError)
show("Error: Division by zero.")
capture(TypeError)
show("Error: Type mismatch.")
stop

Explanation:

  • In this example, different errors are captured in different capture blocks. If a ZeroDivisionError occurs, it will be handled by the first block; if a TypeError occurs, it will be handled by the second block.

Raising Errors

You can manually raise errors using the raise keyword in EasyBite. This is useful for enforcing certain conditions in your code and throwing custom errors when those conditions are not met.

Syntax:

raise error("Error message")

Example:

if age < 18
raise error("You must be at least 18 years old to proceed.")
end if

Explanation:

  • If the condition age < 18 is true, the raise error() statement will throw a custom error with the specified message.

Custom Errors with Variables

You can also create custom error variables that can be passed around within your program. This allows you to manage errors dynamically and use them in other parts of the program.

Syntax:

capture(errorVar)
// Handle the captured error
stop

Example:

try
set result to 10 / 0 // Division by zero
capture(err)
show("Captured Error: " + err)
stop

Explanation:

  • In this example, the err variable captures the error and allows it to be printed later in the program.

Example of Handling Multiple Errors

You can handle multiple types of errors in a single try block by using multiple capture blocks. Each capture block can handle a specific type of error.

Example:

try
set result to 10/0 // Division by zero
capture(ZeroDivisionError)
show("Error: Cannot divide by zero.")
capture(OverflowError)
show("Error: Number too large.")
stop

Explanation:

  • The try block attempts to divide 10 by 0, which triggers the ZeroDivisionError and is handled by the first capture block.

Conclusion

Error handling in EasyBite helps make your programs more robust and reliable. By using try, capture, and raise, you can control the flow of the program, capture errors, and raise custom errors when necessary. This allows your programs to handle issues gracefully without crashing unexpectedly.

By adopting error handling practices, you ensure that your EasyBite applications can deal with runtime errors effectively and provide meaningful feedback to the user.


Summary of Key Functions and Keywords

Function/KeywordDescription
tryDefines a block of code that might throw an error.
capture(varname)Captures the error and stores it in a variable varname for handling.
raise error(message)Raises a custom error with the given message.
stopEnds the current try block and prevents further execution of the try-capture cycle.
end ifEnds an if statement.