AgentScript Effect Examples
Error Handling Examples
AgentScript
function maybeCompute(value: number): number goal: "Demonstrates random failure for example" requires: value >= 0: "Value must be non-negative" return: value |> randomTrigger |> finalizeCompute
errors: CustomError: "Oops, random event occurred"
tests: success: 10 -> 10 errors: 0 -> CustomError`
TypeScript (Effect)
import { Console, Effect } from 'effect'
class CustomError { readonly _tag = 'CustomError' constructor(readonly value: number) {}}
const maybeFail: Effect.Effect<number, CustomError> = Effect.sync(() => Math.random()).pipe( Effect.andThen((value) => value > 0.5 ? Effect.fail(new CustomError(value)) : Effect.succeed(value) ),)
const main = maybeFail.pipe( Effect.andThen((value) => Console.log(`Got value \${value}`)), Effect.catchTag('CustomError', (error) => Console.error(`Oops! Got value ${error.value}`)),)
Effect.runPromise(main)
TypeScript (Plain)
class CustomError extends Error { constructor(readonly value: number) { super(`Custom error triggered with value ${value}`) }}
function maybeFail(): number { const value = Math.random() if (value > 0.5) { throw new CustomError(value) } return value}
function main(): void { try { const result = maybeFail() console.log(`Got value ${result}`) } catch (error) { if (error instanceof CustomError) { console.error(`Oops! Got value ${error.value}`) } else { console.error('Unknown error occurred!') } }}
main()`