Я ожидаю, что следующий код напечатает строки перед оператором, в котором статическое значение переменной установлено, но оно не работает должным образом.Не работает ли java-байт-код последовательно?
import java.io.PrintWriter;
class Bank{
private static boolean isInCrisis = false;
public static boolean getIsInCrisis(){return Bank.isInCrisis;}
public static boolean setIsInCrisis(boolean crisis){
return Bank.isInCrisis = crisis;
}
public String getCash() throws Exception{
if(!Bank.isInCrisis){
return new String("$100");
}
else{
throw new Exception("Bank is in crisis");
}
}
}
public class InstanceObjects{
public static void main(String... st) {
try{
Bank hsbc = new Bank();
PrintWriter writer = new PrintWriter(System.out);
writer.printf("collect cash: %s\n",hsbc.getCash());
writer.printf("collect cash: %s\n",hsbc.getCash());
writer.printf("collect cash: %s\n",hsbc.getCash());
writer.printf("collect cash: %s\n",hsbc.getCash());
writer.printf("collect cash: %s\n",hsbc.getCash());
writer.printf("collect cash: %s\n",hsbc.getCash());
writer.printf("collect cash: %s\n",hsbc.getCash());
hsbc.setIsInCrisis(true);
writer.printf("collect cash: %s\n",hsbc.getCash());
writer.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
выход бросает исключение «Банк находится в кризисе», но он должен сначала напечатать несколько строк «собирать наличные ...» сообщение и сообщение об исключении ... забросил
Пожалуйста включите всю трассировку стеки и указать оператор в 'основные()', где исключение (должно быть второй 'at' линией). –
@mabbas, а как насчет сообщений printf чуть выше 'hsbc.setIsInCrisis (true)'? выход должен быть следующим: собрать наличные 100 долларов США, .... исключение поймано .... банк находится в кризисе ... –
java.lang.Exception: Банк находится в кризисе \t at Bank.getCash (InstanceObjects.java: 13) \t at InstanceObjects.main (InstanceObjects.java:31) –