Size: a a a

Rude P[rogramming]Offtop

2021 June 12

I

Ilmir in Rude P[rogramming]Offtop
Если присваивание - последний statement в try блоке, то если он выполнится, исключения не выкинется. Мамой клянусь!
источник

ch

central hardware in Rude P[rogramming]Offtop
Если это не кастрированный пример то доказательство этого будет слегка сложнее
источник

I

Ilmir in Rude P[rogramming]Offtop
Кастрированный пример показывает неконсистентность в языке. Две конструкции, которые должны работать одинаково, работают по-разному.
источник

ch

central hardware in Rude P[rogramming]Offtop
А кто сказал что должна работать одинаково? Цитата из JVM specifications тут думаю не помешала бы которая это подтверждает, если мы говорим про jvm
источник

I

Ilmir in Rude P[rogramming]Offtop
Идея говорит "можно вынести присваивание", значит одинаково!
источник

I

Ilmir in Rude P[rogramming]Offtop
Вот дифф двух случаев
--- Untitled    Sat Jun 12 03:17:47 2021
+++ Untitled2   Sat Jun 12 03:17:47 2021
@@ -2,24 +2,27 @@
    TRYCATCHBLOCK L0 L1 L2 java/lang/Exception
   L3
    LINENUMBER 2 L3
-    ACONST_NULL
-    ASTORE 0
   L0
    NOP
    LDC "a"
-    ASTORE 0
+   L4
+    ASTORE 1
   L1
-    GOTO L4
+    GOTO L5
   L2
+    ASTORE 2
+   L6
+    LDC "b"
+   L7
    ASTORE 1
   L5
-    LDC "b"
+    ALOAD 1
    ASTORE 0
-   L4
-    LINENUMBER 3 L4
+   L8
+    LINENUMBER 3 L8
    RETURN
-   L6
-    LOCALVARIABLE e Ljava/lang/Exception; L5 L4 1
-    LOCALVARIABLE a Ljava/lang/String; L0 L6 0
+   L9
+    LOCALVARIABLE e Ljava/lang/Exception; L6 L5 2
+    LOCALVARIABLE a Ljava/lang/String; L8 L9 0
    MAXSTACK = 1
-    MAXLOCALS = 2
+    MAXLOCALS = 3

Байткод практически одинаковый.
источник

(

( in Rude P[rogramming]Offtop
может
источник

(

( in Rude P[rogramming]Offtop
try {
 a = 3
 throw Exception()
} catch (e: Exception) {
 a = 4
}
источник

I

Ilmir in Rude P[rogramming]Offtop
источник

(

( in Rude P[rogramming]Offtop
да пожалуйста
источник

ch

central hardware in Rude P[rogramming]Offtop
throw exception = new Exception, такое скомпилится? вроде должно
источник

I

Ilmir in Rude P[rogramming]Offtop
Тут statement не присваивание, а throw expression.
источник

ch

central hardware in Rude P[rogramming]Offtop
источник

ch

central hardware in Rude P[rogramming]Offtop
так что вполне себе можно такое провернуть
источник

AM

Andrew Mikhaylov in Rude P[rogramming]Offtop
Кек
источник

AM

Andrew Mikhaylov in Rude P[rogramming]Offtop
Переслано от Sphinkx
ПРИХОДИШЬ В EA
@
2 МЕСЯЦА ПЫТАЕШЬСЯ НАСТРОИТЬ FROSTBITE НА РАБОЧЕМ КОМПЕ
@
ДАЖЕ С ПОМОЩЬЮ ЛИДА СБОРКА ПРОХОДИТ НЕ ВСЕГДА
@
ПАЦАНЫ ИЗ ФОРУМА МОДДЕРОВ ВЫКЛАДЫВАЮТ ИНСТРУКЦИЮ ЧЕРЕЗ 3 ДНЯ ПОСЛЕ УТЕЧКИ
@
В ОПЕН СПЕЙСЕ ВСЕ СТАРАЮТСЯ НЕ СМОТРЕТЬ В ГЛАЗА ДРУГ ДРУГУ
источник

VP

Vladimir Petrakovich in Rude P[rogramming]Offtop
В котлине не прокатит, да и присваивание уже не последнее действие в try
источник

VP

Vladimir Petrakovich in Rude P[rogramming]Offtop
Щас бы накидывать костыли в компилятор, чтобы поддержать случай, который тривиально преобразуется в try as expression
источник

VP

Vladimir Petrakovich in Rude P[rogramming]Offtop
Или ты ждёшь issue чтобы тут же закрыть с As Designed? 😂
источник

U

Unat in Rude P[rogramming]Offtop
https://t.me/android_ru/965965 - уже второй предприимчивый делец за месяц описывает аналогичный путь к успеху. Это сейчас поветрие такое пошло - покупать полуфабрикаты-копии популярных приложений?
источник