# What happen when a controller raises a custom exception?

**URL:** <https://www.ruby-forum.com/t/what-happen-when-a-controller-raises-a-custom-exception/160435>\
**Category:** Rails\
**Created:** [February 16, 2009, 12:20pm UTC](https://www.ruby-forum.com/t/what-happen-when-a-controller-raises-a-custom-exception/160435 "2009-02-16T12:20:35Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![bobm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/9fc348/32.png) [@bobm](https://www.ruby-forum.com/u/bobm)\
**Post date:** [February 16, 2009, 12:20pm UTC](https://www.ruby-forum.com/t/what-happen-when-a-controller-raises-a-custom-exception/160435/1 "2009-02-16T12:20:35Z")

</div>

Hello, some controllers of mine raises security exception.

environments/test.rb defines  
config.action\_controller.consider\_all\_requests\_local = true

1. I want to raise from a controller, and have the exception visible in  
test, inside assert\_raise blocks but I don’t.

2. I defined rescue\_action\_in\_public() which (I’m sure) is not called  
during tests.

3. But during tests, when my controller raises  
AppException::SecurityError it is not caught by the assert\_raise block.

So I added this, to see what happens :

def rescue\_action\_locally(exception)  
p exception  
raise exception  
end

The exception is well printed on console but re-raising lead to Class:  
  
Message: \<“You have a nil object when you didn’t expect it!\nYou might  
have expected an instance of ActiveRecord::Base.\nThe error occurred  
while evaluating nil.[]=”\>

I really don’t understand what happen because after re-raising no code  
of mine is running, it leave my scope …

So I wonder how to have these exceptions visible in test ?

Thanks

---

<div class="post-metadata">

**Author:** ![bobm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/9fc348/32.png) [@bobm](https://www.ruby-forum.com/u/bobm)\
**Post date:** [February 17, 2009, 1:17am UTC](https://www.ruby-forum.com/t/what-happen-when-a-controller-raises-a-custom-exception/160435/2 "2009-02-17T01:17:17Z")

</div>

Try rescue\_from:  
[http://api.rubyonrails.org/classes/ActiveSupport/Rescuable/ClassMethods.html#M000978](http://api.rubyonrails.org/classes/ActiveSupport/Rescuable/ClassMethods.html#M000978)

On Feb 16, 6:20 am, Bob M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
