Suppose I've written a class that does something useful. This class, let's call it a Widget, is created like this... a = Widget.new(some_value) Not all values of 'some_value' are valid and I need to indicate when creation fails. I see two ways to signify this... a = Widget.new(invalid_value) #=> nil or a = Widget.new(invalid_value) #=> raises an exception Which of these do you prefer and why? Would you prefer both? How about a 'Widget.new!' method that throws an exception? Thanks, _Kevin