# Help writing a timeout macro

**URL:** https://discourse.julialang.org/t/help-writing-a-timeout-macro/16591
**Category:** General Usage
**Tags:** macros, task
**Created:** [October 21, 2018, 3:47am UTC](https://discourse.julialang.org/t/help-writing-a-timeout-macro/16591 "2018-10-21T03:47:37Z")
**Posts on this page:** 1
**Showing post:** 7

<div class="post-metadata">

### Author: ![hhaensel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hhaensel/32/1207_2.png) [@hhaensel](https://discourse.julialang.org/u/hhaensel)
#### Post date: [November 7, 2022, 2:23pm UTC](https://discourse.julialang.org/t/help-writing-a-timeout-macro/16591/7 "2022-11-07T14:23:04Z")

</div>

Thanks for this useful snippet.

I wanted something very similar but with the possibility of a default value in case of failure. So I came up with this:

```julia
macro timeout(seconds, expr, fail)
    quote
        tsk = @task $expr
        schedule(tsk)
        Timer($seconds) do timer
            istaskdone(tsk) || Base.throwto(tsk, InterruptException())
        end
        try
            fetch(tsk)
        catch _
            $fail
        end
    end
end

x = @timeout 1 begin
    sleep(1.1)
    println("done")
    1
end "failed"

```

---

_[View the full topic](https://discourse.julialang.org/t/help-writing-a-timeout-macro/16591)._
