# Catch throw?

**URL:** <https://www.ruby-forum.com/t/catch-throw/78814>\
**Category:** Ruby\
**Created:** [March 9, 2006, 2:37am UTC](https://www.ruby-forum.com/t/catch-throw/78814 "2006-03-09T02:37:30Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![PaatschS\_Bernd](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/fbc32d/32.png) [@PaatschS\_Bernd](https://www.ruby-forum.com/u/PaatschS_Bernd)\
**Post date:** [March 9, 2006, 2:37am UTC](https://www.ruby-forum.com/t/catch-throw/78814/1 "2006-03-09T02:37:30Z")

</div>

Hello,

I just started using catch and throw. Therefore this question might be  
an  
easy one.

I have multiple ruby files. In one of the files I like to throw and then  
in  
the main function in a different file I like to catch the throw. Is  
this  
possible or do throw/catch need to be in the same file?

Example:  
fileOne.rb

def somefunct  
…  
throw :quit\_script  
…  
end

fileTwo.rb  
catch :quit\_script  
…  
end

Thx,  
Bernd

---

<div class="post-metadata">

**Author:** ![PaatschS\_Bernd](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/fbc32d/32.png) [@PaatschS\_Bernd](https://www.ruby-forum.com/u/PaatschS_Bernd)\
**Post date:** [March 9, 2006, 2:55am UTC](https://www.ruby-forum.com/t/catch-throw/78814/2 "2006-03-09T02:55:41Z")

</div>

On Mar 8, 2006, at 8:35 PM, Paatsch, Bernd wrote:

> Is this  
> end
> 
> fileTwo.rb  
> catch :quit\_script  
> …  
> end
> 
> Thx,  
> Bernd

They have to be in the same call chain.

so if fileTwo require’s fileOne.rb and fileTwo’s code looks like  
catch :quit\_script do  
…  
somefunct()  
…  
end

it will work

---

<div class="post-metadata">

**Author:** ![PaatschS\_Bernd](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/fbc32d/32.png) [@PaatschS\_Bernd](https://www.ruby-forum.com/u/PaatschS_Bernd)\
**Post date:** [March 9, 2006, 4:08am UTC](https://www.ruby-forum.com/t/catch-throw/78814/3 "2006-03-09T04:08:02Z")

</div>

On Thu, 9 Mar 2006, Paatsch, Bernd wrote:

> catch :quit\_script  
> …  
> end
> 
> Thx,  
> Bernd

```
 harp:~ > cat a.rb
 p catch('answer'){ load 'b.rb' }

 harp:~ > cat b.rb
 throw 'answer', 42

 harp:~ > ruby a.rb
 42

```

hth.

-a
