Question: I've got some client code, in this example `MyModule`, that defines some custom Exceptions in a sub module called `Exception`. In `MyModule` there is a `rescue` block that references `Exception`. The problem is, ruby is resolving the name `Exception` to be `MyModule::Exception` (a module) when it needs to be the base Exception class from core ruby. Here's a code illustration to show what I mean:

```
puts Exception
puts Exception.class

module MyModule
    module Exception
        class CustomError < StandardError
        end
    end
end

module MyModule
    puts Exception
    puts Exception.class
end

```

The resulting output is:

```
Exception
Class
MyModule::Exception
Module

```

How can I force the second `Exception` reference to resolve to the core ruby `Exception` class when there is no module to distinguish it? I've tried Kernel::Exception and investigating whether there is a method to get the module its in, but there seems to only be `#name`, which produces the fully qualified name of the class.

Answer: 
When in doubt, you need to specify fully qualified name (FQN) for a class. Your exception has this FQN:

```
 MyModule::Exception

```

but Exception from core is on top level (not nested in anything), so its FQN is just

```
::Exception

```

And yes, you probably **don't want** to rescue core `Exception`. It's bad practice, because this handler will catch more things than you can handle (signals, load errors, etc)
Figured it out. On a lark, I tried `::Exception`, which makes a weird sort of sense.