run-time error

when you run the code, some non-spelling errors occur, for example:

divide by zero error

// output: Division by ZERO 

array bounds

arr = [1]
arr[8] // try to read the element with index 8, but the length is actually only 1 
// output: reflect: slice index out of range 

Go native error

is calling Go standard library, third party When the library is used, there will be many methods that return the value as [Result …, error message], for example

// Go Standard Library-String conversion integer method 

in Go , The signature of the above method is

package strconv 
func Atoi (s string) (int, error) ( 

The return value contains int and error types, and the result returned by Z1h is an array :

res = strconv.Atoi (" NaN ")
// Output: [0, {"Func": "Atoi", "Num": "NaN", "Err": {}}] 

At this time, you can check whether the [1] th parameter is empty Check if an error is thrown, if it is empty, then [0] is the desired result

res = strconv.Atoi (" NaN ") 
if (res [1]) { 
print ('An error has occurred:', res [1] .Error ()) 
} else { 
print ('got the answer:', res [0]) 
  • You can try to replace" NaN "with" 123 "in the above example *

Throw An error

occurs. When the code runs somewhere, you need to forcibly interrupt the subsequent operations and pass the error information up, you need to throw an exception

-call the panic function to throw an error -when you call the assert method, the parameters passed in If there is an error, the error will also be thrown.

Example of

panic usage

panic ("Bye") 
print ("will not be executed here") 
// Output: Panic at call func:Bye

The use of the assert

print ("Here will not be executed") 
// The first line will output 123 
// The second line will throw an error 
// The third line will be interrupted by the second paragraph, will not be executed 

Error In the

Z1h language, you can use the try {...} catch (e) {...} code block to uniformly catch the thrown exception

as follows, catching the exception of the string conversion integer and processing

var str = "Not a number"; // Can be replaced with "888" Try 
var num = assert (strconv.Atoi (str)); 
print ("Get the number:", num); 
} catch (e) { 
print (`String $ {str} is not a valid integer: $ {e.Error ()}`);