print():

<error>
message: High-level message
class:   `rlang_error`
backtrace:
  1. base::identity(catch_cnd(a()))
  9. rlang:::a()
 10. rlang:::b()
 11. rlang:::c()
<error: parent>
message: Low-level message
class:   `rlang_error`
backtrace:
 1. rlang::with_abort(f())
 3. rlang:::f()
 4. rlang:::g()
 5. rlang:::h()
Call `rlang::last_trace()` to see the full backtrace


summary():

<error>
message: High-level message
class:   `rlang_error`
fields:  `message`, `trace` and `parent`
backtrace:
     █
  1. ├─base::identity(catch_cnd(a()))
  2. ├─rlang::catch_cnd(a())
  3. │ ├─rlang::eval_bare(...)
  4. │ ├─base::tryCatch(...)
  5. │ │ └─base:::tryCatchList(expr, classes, parentenv, handlers)
  6. │ │   └─base:::tryCatchOne(expr, names, parentenv, handlers[[1L]])
  7. │ │     └─base:::doTryCatch(return(expr), name, parentenv, handler)
  8. │ └─base::force(expr)
  9. └─rlang:::a()
 10.   └─rlang:::b()
 11.     └─rlang:::c()
<error: parent>
message: Low-level message
class:   `rlang_error`
fields:  `message`, `trace`, `parent` and `error`
backtrace:
    █
 1. ├─rlang::with_abort(f())
 2. │ └─base::withCallingHandlers(...)
 3. └─rlang:::f()
 4.   └─rlang:::g()
 5.     └─rlang:::h()
