1. Java / Говнокод #18958

    −39

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    public class SomeJavaTest {
    
        public static void main(String[] args) {
            System.out.println(getClassAndMethod());
            try {
                int k = 2 / 0;
            } catch (Exception e) {
                System.out.println(getClassAndMethod());
            }
        }
    
        public static String getClassAndMethod() {  //Возвращает название класса и метода в которых вызывается
            Throwable t = new Throwable();
            StackTraceElement trace[] = t.getStackTrace();
            int stackLevel = 2;
            if (trace.length > stackLevel) {
                StackTraceElement element = trace[stackLevel];
                return new StringBuffer(element.getClassName()).append(".").append(element.getMethodName()).toString();
            }
            return "no info";
        }
    }

    Кто-нибудь расскажет, что за курево в методе getClassAndMethod() ?

    Запостил: Landing, 03 Ноября 2015

    Комментарии (18) RSS

    • у филологов
      trace level 1 = SomeJavaTest.getClassAndMethod(SomeJavaT est .java)
      trace level 2 = SomeJavaTest.main(SomeJavaTest .java)
      Ответить
    • http://stackoverflow.com/a/421338/2609345
      Обычный хак
      Ответить
    • А зачем делить на 0? Можно же просто throw.
      Ответить
      • Может, автор надеется, что после многократного использования этого кода компьютер сдастся и все-таки поделит - за такое можно премию получить же.
        Ответить
      • Это плохой метод получить исключение.
        Вот почему: http://www.youtube.com/watch?v=mZ7pUADoo58
        Ответить
      • На некоторых платформах деление на ноль — суровая необходимость:
        http://govnokod.ru/12196
        Ответить
        • ну пиздеж же это

          man exit

          кроме того в iOS вообще закрывать программы моветон
          Ответить
      • а можно еще

        null.toString();
        Ответить
        • у NPE нету стектрейса
          ты пиздун
          Ответить
          • Да что ты говоришь? Хорошо под гостем всякую хрень нести.
            Ответить
            • http://bugs.java.com/view_bug.do?bug_id=4292742

              хахаха
              иди спать, дурачок
              Ответить
              • 1999 год, Карлguest!
                Ответить
                • ойвей

                  ну возьми джаву и проверь
                  нету стектрейсов у NPE
                  Ответить
                  • такое ты чмо, ваще пиздец) ни разу видимо джаву не видел в глаза. поверятель 2000 нахуй
                    Ответить
                    • Гость обосрамшись

                      http://stackoverflow.com/questions/2411487/nullpointerexception-in-java-with-no-stacktrace


                      You are probably using the Sun JVM, which performs a lot of optimization. To get the stack traces back, you need to pass the option -XX:-OmitStackTraceInFastThrow to the JVM.
                      Ответить
    • return "no info";


      Порадовало. Интерпретатор сразу разберется, что к чему.
      Ответить

    Добавить комментарий