Created Error handling (markdown)
34
Error-handling.md
Normal file
34
Error-handling.md
Normal file
@@ -0,0 +1,34 @@
|
||||
SMNP language doesn't have any sophisticated error handling mechanism, however, you are still able to raise errors using `throw` statement.
|
||||
The `throw` construction is inspired by Java language, however instead of
|
||||
throwing exceptions SMNP language allows you only to throw string values.
|
||||
When control flow meet `throw` statement, program execution is immediately interrupted
|
||||
and Execution Error is raised with message passed to `throw` statement.
|
||||
|
||||
Example:
|
||||
```
|
||||
function divide(a: int, b: int) {
|
||||
if (b == 0) {
|
||||
throw "You are trying to divide by 0!";
|
||||
}
|
||||
|
||||
return a / b;
|
||||
}
|
||||
```
|
||||
If you try to invoke e.g. `divide(2, 0)` the following error will be raised:
|
||||
```
|
||||
Error
|
||||
Source: /.../.../scratchpad.mus
|
||||
Position: line 10, column 15
|
||||
|
||||
You are trying to divide by 0!
|
||||
|
||||
Stack trace:
|
||||
[1] <root>::divide(int, int)
|
||||
[0] <root>::<entrypoint>()
|
||||
```
|
||||
|
||||
SMNP language does not support any equivalent of `try-catch` statements known from
|
||||
other languages. Because the SMNP is not aimed at building complex systems
|
||||
and there is simply no need to implement sophisticated error handling system
|
||||
in simple music, you are actually unable to implement more advanced multi-layer
|
||||
error handling system.
|
||||
Reference in New Issue
Block a user