attempts to evaluate expr and return the result, but stops if it catches an error and returns a failure object.


applies f to any failure object generated.


gives the property prop of any failure object generated.


only catches errors with explicitly specified tags matching form.


  • Enclose[expr,] returns the value of expr if no errors were caught during its evaluation.
  • Enclose will not catch errors that have already been caught by an inner Enclose.
  • Enclose is lexically scoped when no tag is given, and dynamically scoped otherwise. Enclose[expr] therefore handles only instances of Confirm, etc. that lexically appear in the expression expr. It does not handle instances of Confirm, etc. that are encountered only when expr is evaluated.
  • tag can be any expression including a pattern.
  • Enclose catches errors thrown by Confirm, ConfirmBy, ConfirmMatch, ConfirmQuiet and ConfirmAssert.
  • Enclose effectively uses Catch with a special tag.
  • The default value of f in Enclose[expr,f,] is Identity.
  • In Enclose[expr,"prop"], the properties that can be requested depend on the error thrown. »


open allclose all

Basic Examples  (2)

Evaluate an expression, exiting as soon as any errors are thrown:

Create a robust function:

Scope  (6)

Process an error before returning:

Set f to "Expression" to propagate errors without wrapping in Failure:

The innermost Enclose has precedence:

Use a tag to pass an error to the outer Enclose:

Provide a constant function for f to return a fixed value in the event of any error:

Propagate errors up multiple levels:

Perform multiple confirmations by nesting confirms:

Applications  (3)

Safely call a function that could fail, propagating any errors unchanged:

Propagate missing values while calculating GDP per capita for every country:

Find all polyhedra that have edges between every pair of vertices, ignoring polyhedra where no BoundaryMeshRegion is available:

Possible Issues  (3)

Catch[,_] can intercept errors:

Enclose does not catch expressions thrown by Throw:

If no tag is provided, Enclose lexically replaces symbols like Confirm with lexically tagged variants:

Wolfram Research (2020), Enclose, Wolfram Language function, https://reference.wolfram.com/language/ref/Enclose.html.


Wolfram Research (2020), Enclose, Wolfram Language function, https://reference.wolfram.com/language/ref/Enclose.html.


@misc{reference.wolfram_2020_enclose, author="Wolfram Research", title="{Enclose}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/Enclose.html}", note=[Accessed: 20-January-2021 ]}


@online{reference.wolfram_2020_enclose, organization={Wolfram Research}, title={Enclose}, year={2020}, url={https://reference.wolfram.com/language/ref/Enclose.html}, note=[Accessed: 20-January-2021 ]}


Wolfram Language. 2020. "Enclose." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/Enclose.html.


Wolfram Language. (2020). Enclose. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Enclose.html