Обертывание исключений добавленные супер/эти вызовы конструктора в другие исключения

Только для проверки я понимаю Вас - Вы в основном хотите выполнить итерации через все результаты, только вызвать какие-либо побочные эффекты произойти?

Побочные эффекты обычно являются плохой идеей точно, потому что вещи более трудно понять с этим видом логики. Однако самый легкий способ сделать это и вызвать полную оценку должно, вероятно, просто выполнить итерации через него:

foreach (var result in aggregationResult)
{
    // Deliberately empty; simply forcing evaluation of the sequence.
}

, Кроме того, Вы могли использовать LastOrDefault () для предотвращения всего копирования, привлеченного в ToArray (). количество () будет хорошо, пока результат не реализует IList (который включает ярлык).

6
задан Alderath 14 August 2009 в 08:18
поделиться

3 ответа

Попробуйте следующее:

public class MyClass
{
  private URL url;

  public MyClass(URL url)
  {
    this.url = url;
  }

  public MyClass(String urlString) throws MyPackageSpecificException
  { 
    this(toURL(urlString));
  }

  private static URL toURL(String urlString) throws MyPackageSpecificException
  {
    try
    {
      return new URL(urlString));
    } 
    catch (MalformedURLException e)
    {
        throw new MyPackageSpecificException(e);
    }
  }
}
6
ответ дан 10 December 2019 в 02:51
поделиться

Если это соответствует вашему коду, вы можете использовать вместо этого используйте статический метод создания:

private MyClass(String urlString) { ... }

public static MyClass createMyClass(String urlString) throws MyPackageSpecificException {
  try {
    new MyClass(urlString);
  catch (Exception e) {
    throw new MyPackageSpecificException(e);
  }
}
3
ответ дан 10 December 2019 в 02:51
поделиться

Вместо использования this () используйте общий метод init (), который принимает аргумент URL таким образом, чтобы он не был первой строкой конструктора.

public MyClass(String url) throws MyPackageSpecificException
{
  try
  {
    init(new URL(url));
  }
  catch (MalformedURLException e)
  {
    throw new MyPackageSpecificException(e);
  }
}

public MyClass(URL url)
{
  init(url);
}

private void init(URL url)
{
  // do constructor work here
}
0
ответ дан 10 December 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: