diff --git a/examples/check-expression/check_expression.bal b/examples/check-expression/check_expression.bal index 702677244d..1f62483012 100644 --- a/examples/check-expression/check_expression.bal +++ b/examples/check-expression/check_expression.bal @@ -1,18 +1,23 @@ import ballerina/io; -// Convert `bytes` to a `string` value and then to an `int` value. -function intFromBytes(byte[] bytes) returns int|error { - - // Use `check` with an expression that may return `error`. - // If `string:fromBytes(bytes)` returns an `error` value, `check` - // makes the function return the `error` value here. - // If not, the returned `string` value is used as the value of the `str` variable. +function intFromBytesWithCheck(byte[] bytes) returns int|error { string str = check string:fromBytes(bytes); - return int:fromString(str); } +// Same as `intFromBytesWithCheck` but with explicit error handling. +function intFromBytesExplicit(byte[] bytes) returns int|error { + string|error res = string:fromBytes(bytes); + // Handling the error explicitly. + if res is error { + return res; + } + return int:fromString(res); +} + public function main() { - int|error res = intFromBytes([104, 101, 108, 108, 111]); - io:println(res); + int|error res1 = intFromBytesWithCheck([104, 101, 108, 108, 111]); + io:println(res1); + int|error res2 = intFromBytesExplicit([104, 101, 108, 108, 111]); + io:println(res2); } diff --git a/examples/check-expression/check_expression.md b/examples/check-expression/check_expression.md index 0e5ff11344..78cfe842c8 100644 --- a/examples/check-expression/check_expression.md +++ b/examples/check-expression/check_expression.md @@ -1,9 +1,7 @@ # Check expression -`check E` is used with an expression `E` that might result in an `error` value. If `E` results in an `error` value , then, `check` makes the function return that `error` value immediately. - -The type of `check E` does not include `error`. The control flow remains explicit. +In Ballerina, it is common to write an expression that may result in an error, such as calling a function that could return an error value, checking if the result belongs to the `error` type and immediately returning that value. You can use the `check` expression to simplify this pattern. ::: code check_expression.bal ::: -::: out check_expression.out ::: \ No newline at end of file +::: out check_expression.out ::: diff --git a/examples/check-expression/check_expression.out b/examples/check-expression/check_expression.out index aed09b016e..b763450360 100644 --- a/examples/check-expression/check_expression.out +++ b/examples/check-expression/check_expression.out @@ -1,2 +1,3 @@ $ bal run check_expression.bal error("{ballerina/lang.int}NumberParsingError",message="'string' value 'hello' cannot be converted to 'int'") +error("{ballerina/lang.int}NumberParsingError",message="'string' value 'hello' cannot be converted to 'int'")