Есть ли способ использовать несколько попыток и один улов? - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть следующий код с несколькими try ... catch, есть ли способ сделать это проще?

try {
    saveToInternalStorage(((BitmapDrawable) image1.getDrawable()).getBitmap(), imageFilename + "_1");
} catch (Exception e) {
    e.printStackTrace();
}
try {
    saveToInternalStorage(((BitmapDrawable) image2.getDrawable()).getBitmap(), imageFilename + "_2");
} catch (Exception e) {
    e.printStackTrace();
}
try {
    saveToInternalStorage(((BitmapDrawable) image3.getDrawable()).getBitmap(), imageFilename + "_3");
} catch (Exception e) {
    e.printStackTrace();
}
try {
    saveToInternalStorage(((BitmapDrawable) image4.getDrawable()).getBitmap(), imageFilename + "_4");
} catch (Exception e) {
    e.printStackTrace();
}

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

Да ... Однако замечания, высказанные в комментариях, действительны

  1. Зачем вам это нужно
  2. Почему вы счастливы, что это не удалось
  3. Почему вы игнорируете ошибки
  4. Если 1 потерпел неудачу, не было бы хорошо, чтобы все они потерпели неудачу

Все это в стороне. вот разбрызгивание кода

var array = new[]{ image1, image2, image3, image4 };

for (var i = 0; i < array.Length; i++)
{
   try
   {
      saveToInternalStorage(array[i].getDrawable().getBitmap(), $"{imageFilename}_{i + 1}");
   }
   catch (Exception e)
   {
      e.printStackTrace();
   }
}
1 голос
/ 10 апреля 2019

Если то, что вы написали, действительно соответствует логике, то:

private void trySave(Whatever image. String file) {
   try {
       saveToInternalStorage(image.getDrawable().getBitmap(), file);
   } 
   catch (Exception exc) {
        exc.printStackTrace();
   }
}

и звоните как

trySave(image1, imageFilename+"_1)";
trySave(image2, imageFilename+"_2");
trySave(image3, imageFilename+"_3");
trySave(image4, imageFilename+"_4");

Подпрограммы уменьшают повторение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...