Щоразу, коли програма Perl, Python, C ++ або Tcl зупиняється, за винятком необробленого винятку, ці мовні режими дбають про реєстрацію ненульового коду виходу для цього процесу. Навіть програми на основі Eclipse повертають 1, якщо вони не вдаються під час запуску. Програми, які виконуються за стандартом java.exe
, щасливо повертають нуль незалежно від того, наскільки різко вони закінчуються, якщо тільки програма не дзвонить System.exit()
зі значенням виходу. Навіть AssertionFailedError
або UnsatisfiedLinkError
повідомляється про те, що викликає програму, як успішний вихід.
Звичайно, не всі системи мають коди повернення програми, але Unix і Windows були досить важливими, щоб гарантувати java.lang.Process.exitValue()
дочірні процеси; Чи вони також не гарантують дотримання конвенцій для батьківських процесів?
Це вада в мовному дизайні чи просто в реалізації? Чи є аргумент, що це гарна ідея?