Программисты JAVA общаются здесь
Anonymous
Граница блока перехвата исключения байт-кода Java
Сообщение
Anonymous » 20 окт 2024, 19:10
У меня есть класс, сгенерированный dex2jar, такой байт-код
Код: Выделить всё
public boolean a(com.google.android.exoplayer2.metadata.Metadata);
descriptor: (Lcom/google/android/exoplayer2/metadata/Metadata;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=6, args_size=2
0: iconst_0
1: istore_2
2: aload_1
3: getfield #38 // Field com/google/android/exoplayer2/metadata/Metadata.d:[Lcom/google/android/exoplayer2/metadata/Metadata$Entry;
6: astore 5
8: iload_2
9: aload 5
11: arraylength
12: if_icmpge 134
15: aload 5
17: iload_2
18: aaload
19: astore 5
21: aload 5
23: instanceof #40 // class com/google/android/exoplayer2/metadata/id3/CommentFrame
26: ifeq 128
29: aload 5
31: checkcast #40 // class com/google/android/exoplayer2/metadata/id3/CommentFrame
34: astore 5
36: ldc #42 // String iTunSMPB
38: aload 5
40: getfield #46 // Field com/google/android/exoplayer2/metadata/id3/CommentFrame.f:Ljava/lang/String;
43: invokevirtual #52 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
46: ifne 54
49: iconst_0
50: istore_3
51: goto 122
54: getstatic #21 // Field c:Ljava/util/regex/Pattern;
57: aload 5
59: getfield #55 // Field com/google/android/exoplayer2/metadata/id3/CommentFrame.g:Ljava/lang/String;
62: invokevirtual #59 // Method java/util/regex/Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
65: astore 5
67: aload 5
69: invokevirtual #65 // Method java/util/regex/Matcher.find:()Z
72: ifeq 49
75: aload 5
77: iconst_1
78: invokevirtual #69 // Method java/util/regex/Matcher.group:(I)Ljava/lang/String;
81: bipush 16
83: invokestatic #75 // Method java/lang/Integer.parseInt:(Ljava/lang/String;I)I
86: istore_3
87: aload 5
89: iconst_2
90: invokevirtual #69 // Method java/util/regex/Matcher.group:(I)Ljava/lang/String;
93: bipush 16
95: invokestatic #75 // Method java/lang/Integer.parseInt:(Ljava/lang/String;I)I
98: istore 4
100: iload_3
101: ifgt 109
104: iload 4
106: ifle 49
109: aload_0
110: iload_3
111: putfield #27 // Field a:I
114: aload_0
115: iload 4
117: putfield #29 // Field b:I
120: iconst_1
121: istore_3
122: iload_3
123: ifeq 128
126: iconst_1
127: ireturn
128: iinc 2, 1
131: goto 2
134: iconst_0
135: ireturn
136: astore 5
138: goto 49
Exception table:
from to target type
75 100 136 Class java/lang/NumberFormatException
109 120 136 Class java/lang/NumberFormatException
по моему мнению:
следующей последней инструкцией блока try исключения должна быть инструкция запуска блока catch .
но это пример сломал мне голову, и логика верна!
try Block: от 75 до 120, catch Block: 136
Я хочу знать, есть ли какие-либо другие инструкции по оптимизации для Java-компилятора или не-Java-компилятора, подобные этому примеру.
Подробнее здесь:
https://stackoverflow.com/questions/791 ... s-boundary
1729440653
Anonymous
У меня есть класс, сгенерированный dex2jar, такой байт-код [code] public boolean a(com.google.android.exoplayer2.metadata.Metadata); descriptor: (Lcom/google/android/exoplayer2/metadata/Metadata;)Z flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=6, args_size=2 0: iconst_0 1: istore_2 2: aload_1 3: getfield #38 // Field com/google/android/exoplayer2/metadata/Metadata.d:[Lcom/google/android/exoplayer2/metadata/Metadata$Entry; 6: astore 5 8: iload_2 9: aload 5 11: arraylength 12: if_icmpge 134 15: aload 5 17: iload_2 18: aaload 19: astore 5 21: aload 5 23: instanceof #40 // class com/google/android/exoplayer2/metadata/id3/CommentFrame 26: ifeq 128 29: aload 5 31: checkcast #40 // class com/google/android/exoplayer2/metadata/id3/CommentFrame 34: astore 5 36: ldc #42 // String iTunSMPB 38: aload 5 40: getfield #46 // Field com/google/android/exoplayer2/metadata/id3/CommentFrame.f:Ljava/lang/String; 43: invokevirtual #52 // Method java/lang/String.equals:(Ljava/lang/Object;)Z 46: ifne 54 49: iconst_0 50: istore_3 51: goto 122 54: getstatic #21 // Field c:Ljava/util/regex/Pattern; 57: aload 5 59: getfield #55 // Field com/google/android/exoplayer2/metadata/id3/CommentFrame.g:Ljava/lang/String; 62: invokevirtual #59 // Method java/util/regex/Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; 65: astore 5 67: aload 5 69: invokevirtual #65 // Method java/util/regex/Matcher.find:()Z 72: ifeq 49 75: aload 5 77: iconst_1 78: invokevirtual #69 // Method java/util/regex/Matcher.group:(I)Ljava/lang/String; 81: bipush 16 83: invokestatic #75 // Method java/lang/Integer.parseInt:(Ljava/lang/String;I)I 86: istore_3 87: aload 5 89: iconst_2 90: invokevirtual #69 // Method java/util/regex/Matcher.group:(I)Ljava/lang/String; 93: bipush 16 95: invokestatic #75 // Method java/lang/Integer.parseInt:(Ljava/lang/String;I)I 98: istore 4 100: iload_3 101: ifgt 109 104: iload 4 106: ifle 49 109: aload_0 110: iload_3 111: putfield #27 // Field a:I 114: aload_0 115: iload 4 117: putfield #29 // Field b:I 120: iconst_1 121: istore_3 122: iload_3 123: ifeq 128 126: iconst_1 127: ireturn 128: iinc 2, 1 131: goto 2 134: iconst_0 135: ireturn 136: astore 5 138: goto 49 Exception table: from to target type 75 100 136 Class java/lang/NumberFormatException 109 120 136 Class java/lang/NumberFormatException [/code] по моему мнению: [b]следующей последней инструкцией блока try исключения должна быть инструкция запуска блока catch[/b]. но это пример сломал мне голову, и логика верна! [b]try Block: от 75 до 120, catch Block: 136[/b] Я хочу знать, есть ли какие-либо другие инструкции по оптимизации для Java-компилятора или не-Java-компилятора, подобные этому примеру. Подробнее здесь: [url]https://stackoverflow.com/questions/79107499/java-bytecode-exception-catch-blocks-boundary[/url]
Неперехваченное исключение из блока перехвата mysqli_sql_Exception
Anonymous »
28 фев 2024, 13:00 » в форуме
Php
У меня есть код, в котором я поглощаю mysqli_sql_Exception, регистрирую его и выдаю новое исключение с более общим сообщением об ошибке, которое может быть отображено пользователю. Однако новое исключение не перехватывается вторым уловом.
попробуй...
0 Ответы
20 Просмотры
Последнее сообщение Anonymous
28 фев 2024, 13:00
0 Ответы
9 Просмотры
Последнее сообщение Anonymous
01 дек 2024, 11:57
Трассировка стека после перехвата исключения
Anonymous »
03 окт 2023, 03:29 » в форуме
C++
Мне бы тоже хотелось увидеть трассировку стека после того, как исключение было выброшено, конечно, с помощью отладчика. Обычно, когда исключение не перехватывается, отладчик останавливает программу после получения SIGABRT, и я могу видеть всю...
0 Ответы
45 Просмотры
Последнее сообщение Anonymous
03 окт 2023, 03:29
0 Ответы
108 Просмотры
Последнее сообщение Anonymous
03 мар 2024, 08:39
Как хранить байт из Java в байт в PostgreSQL?
Anonymous »
04 авг 2025, 23:44 » в форуме
JAVA
Я получаю проблему, когда пытаюсь вставить переменную типа «байт» в Java в переменную типа «Bytea» в Postgresql.
Это моя таблица в PostgreSQL:
CREATE TABLE mesa (
id_mesa serial PRIMARY KEY,
tag varchar(50),
modelo varchar(50),
menor_complemento...
0 Ответы
3 Просмотры
Последнее сообщение Anonymous
04 авг 2025, 23:44