Code throw Object1Exception(type); without the new; you are throwing a pointer to an exception, not an exception itself.
BTW, as commented by polkadotcadaverpolkadotcadaver, the error message was pretty clear, it told you about throwing an instance of some pointer type throwing an instance of 'tp::Object1Exception*'....