message: dnn: clarify error message from getMemoryShapes()
diff: @@ -2812,8 +2812,29 @@ struct Net::Impl
  ShapesVec& os = inOutShapes[id].out;
  ShapesVec& ints = inOutShapes[id].internal;
  int requiredOutputs = layers[id].requiredOutputs.size();
  - inOutShapes[id].supportInPlace =
  - layers[id].getLayerInstance()->getMemoryShapes(is, requiredOutputs, os, ints);
  + Ptr<Layer> l = layers[id].getLayerInstance();
  + CV_Assert(l);
  + bool layerSupportInPlace = false;
  + try
  + {
  + layerSupportInPlace = l->getMemoryShapes(is, requiredOutputs, os, ints);
  + }
  + catch (const cv::Exception& e)
  + {
  + CV_LOG_ERROR(NULL, "OPENCV/DNN: [" << l->type << "]:(" << l->name << "): getMemoryShapes() throws exception." <<
  + " inputs=" << is.size() << " outputs=" << os.size() << "/" << requiredOutputs);
  + for (size_t i = 0; i < is.size(); ++i)
  + {
  + CV_LOG_ERROR(NULL, " input[" << i << "] = " << toString(is[i]));
  + }
  + for (size_t i = 0; i < os.size(); ++i)
  + {
  + CV_LOG_ERROR(NULL, " output[" << i << "] = " << toString(os[i]));
  + }
  + CV_LOG_ERROR(NULL, "Exception message: " << e.what());
  + throw;
  + }
  + inOutShapes[id].supportInPlace = layerSupportInPlace;
  for (int i = 0; i < ints.size(); i++)
  CV_Assert(total(ints[i]) > 0);
  