I have a custom View Controller that is a subclass of UIViewController that requires a data object to be set up properly. Without this object, showing the VC doesn't make any sense. So I created a custom initialiser that requires this object to be passed as an parameter/argument. There is also no "default" data object, so there is no point for me to override the inherited init, and implement passing this default data object internally from init to custom init.
Instead I am raising an exception that explains that you need to add an object in the designated custom initialiser instead of using the inherited init method.
However, my colleagues object that I just should return nil in the overridden standard init. However they are not giving me any proper argument, they only tell me that this is the convention. Which is not an argument for me strictly speaking. I won't do things just because they are tradition.
Why return nil and why raising a custom exception is wrong?