Pause funktioniert nicht in versuchen mit Ressourcen, aber arbeiten in versuchen ohne Ressourcen!
Dies ist ein einfaches Beispiel für diese Situation. Ich habe diesen "Bug" im Arbeitsprojekt entdeckt. Wenn ich versuche, verwenden, ohne RessourcenPause funktioniert nicht in versuchen mit Ressourcen, aber in Versuch ohne Ressourcen arbeiten
try {
Resources resources = getResources()
// some code here, look below
}
Ich habe nur eine Wiederholung meines Zyklus, und es ist richtig, weil ich die Bedingung „wenn sie wahr ist, dann brechen“, aber wenn ich versuche, ohne Rückgriff auf mit Ressourcen geändert versuchen.
try (Resources resources = getResources()) {
// some code here, look below
}
Ich war schockiert! Der Zyklus wurde endlos! Warum?
Voll Code:
public class Test {
public static void testTryWithResAndBreak() {
while (true) {
System.out.println("we are in (while(true))");
try (Resources resources = getResources()) {
System.out.println("We are in try block");
if (true) {
System.out.println("We are in the if(true) now! Next step is break");
break;
}
System.out.println("OOOOO___OOOO WE ARE HERE!!!");
resources.writeSomething();
} catch (Exception e) {
System.out.println("Catched exception");
}
}
}
private static class Resources implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("Resources closed");
throw new Exception("Exception after closed resources!");
}
public void writeSomething() {
System.out.println("i wrote something");
}
}
private static Resources getResources() {
return new Resources();
}
public static void main(String[] args) {
testTryWithResAndBreak();
}
}
'if (true) {...}' kann vom Compiler entfernt werden. Hast du dort einen tatsächlichen Zustand? – pablochan
Zeigen Sie die andere Version, etwas sagt mir, dass Sie nicht in der Nähe anrufen. –
@pablochan warum? Pause hat nicht funktioniert? Wenn der Compiler meine Bedingung gelöscht hat, löschte er nicht "break". Wenn zum Beispiel (wahr) {"etwas tun"} optimiert wird, wird es einfach "etwas tun". – GermanSevostyanov