avoid the cost of throwing an exception when preserving stack trace