LogRecord дает & lt; init & gt; & rdquo; как имя источника метода [дубликат]

Нет необходимости использовать withRouter. Это работает для меня:

На родительской странице

<BrowserRouter>
   <Switch>
        <Route path="/routeA" render={(props)=> (
          <ComponentA {...props} propDummy={50} />
        )} />

        <Route path="/routeB" render={(props)=> (
          <ComponentB {...props} propWhatever={100} />
          )} /> 
      </Switch>
</BrowserRouter>

Затем в ComponentA или ComponentB вы можете получить доступ к

this.props.history

, включая метод this.props.history.push.

14
задан Pops 22 October 2012 в 16:21
поделиться

2 ответа

Чтобы исключение было создано при построении объекта, в конструкторе

  • при инициализации переменных
  • [/ g6 есть два варианта:

    • ]

      Посмотрите эту демонстрацию я написал: http://ideone.com/Mm5w5


      class Main
      {
              public static void main (String[] args) throws java.lang.Exception
              {
                      try
                      { new Test(); } catch (Exception e) { e.printStackTrace(); }
      
                      try
                      { new Test2(); } catch (Exception e) { e.printStackTrace(); }
      
                      try
                      { new Test3(); } catch (Exception e) { e.printStackTrace(); }
      
      
              }
      
              static class Test
              {
                      Object obj = getObject();
                      Object getObject()
                      { throw new RuntimeException("getObject"); }
              }
      
              static class Test2
              {
                      Test2()
                      {
                              throw new RuntimeException("constructor");
                      }
              }
      
              static class Test3
              {
                      Object obj1 = null;
                      String str = obj1.toString();
              }
      }
      

      Производит:

      java.lang.RuntimeException: getObject
          at Main$Test.getObject(Main.java:24)
          at Main$Test.<init>(Main.java:22)
          at Main.main(Main.java:9)
      java.lang.RuntimeException: constructor
          at Main$Test2.<init>(Main.java:31)
          at Main.main(Main.java:12)
      java.lang.NullPointerException
          at Main$Test3.<init>(Main.java:38)
          at Main.main(Main.java:15)
      
    17
    ответ дан Martijn Courteaux 28 August 2018 в 11:19
    поделиться

    & lt; init>

    называется

    Метод инициализации экземпляра

    , который создается вашим компилятором java от созданного вами конструктора. Хотя это неверное определение метода, ваш JVM ожидает этого, и все, что вы положили в конструктор, будет выполняться в методе. Поэтому, когда вы с исключением, вы можете быть уверены, что это из конструктора исполняемого Java-класса. Подробнее об этом читайте в статьях по дизайну Билла Веннера Инициализация объекта .

    6
    ответ дан sakthisundar 28 August 2018 в 11:19
    поделиться
    Другие вопросы по тегам:

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