# Minitest assert\_throws, why rescue?

**URL:** <https://www.ruby-forum.com/t/minitest-assert-throws-why-rescue/174790>\
**Category:** Ruby\
**Created:** [September 2, 2009, 9:13am UTC](https://www.ruby-forum.com/t/minitest-assert-throws-why-rescue/174790 "2009-09-02T09:13:43Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![tcsnide](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/eb8c5e/32.png) [@tcsnide](https://www.ruby-forum.com/u/tcsnide)\
**Post date:** [September 2, 2009, 9:13am UTC](https://www.ruby-forum.com/t/minitest-assert-throws-why-rescue/174790/1 "2009-09-02T09:13:43Z")

</div>

In minitest why does assert\_throws rescue ArgumentError/NameError ?

def assert\_throws sym, msg = nil  
default = “Expected #{mu\_pp(sym)} to have been thrown”  
caught = true  
catch(sym) do  
begin  
yield  
rescue ArgumentError =\> e # 1.9 exception  
default += “, not #{e.message.split(/ /).last}”  
rescue NameError =\> e # 1.8 exception  
default += “, not #{e.name.inspect}”  
end  
caught = false  
end

```
  assert caught, message(msg) { default }
end

```

Thanks.

---

<div class="post-metadata">

**Author:** ![tcsnide](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/eb8c5e/32.png) [@tcsnide](https://www.ruby-forum.com/u/tcsnide)\
**Post date:** [September 2, 2009, 4:25pm UTC](https://www.ruby-forum.com/t/minitest-assert-throws-why-rescue/174790/2 "2009-09-02T16:25:44Z")

</div>

On Sep 2, 3:40 am, John B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> On Sep 2, 2009, at 12:12 AM, Intransition wrote:
> 
> > In minitest why does assert\_throws rescue ArgumentError/NameError ?
> 
> NameError (or ArgumentError on 1.9) is what’s raised by Kernel#throw  
> when there’s no catch block for the thrown symbol.

I see. Thanks.

---

<div class="post-metadata">

**Author:** ![tcsnide](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/eb8c5e/32.png) [@tcsnide](https://www.ruby-forum.com/u/tcsnide)\
**Post date:** [September 2, 2009, 9:44am UTC](https://www.ruby-forum.com/t/minitest-assert-throws-why-rescue/174790/3 "2009-09-02T09:44:09Z")

</div>

On Sep 2, 2009, at 12:12 AM, Intransition wrote:

> In minitest why does assert\_throws rescue ArgumentError/NameError ?

NameError (or ArgumentError on 1.9) is what’s raised by Kernel#throw  
when there’s no catch block for the thrown symbol.

~ j.
