Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 4, 2019 23:39:27

jantex69
Зарегистрирован: 2019-10-04
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Tracebeck

Приветствую!

Только перешёл с языка Java на Python и для меня не понятно, почему, когда случается ошибка, то вывод Traceback идёт вперемешку с нормальным выводом.
К примеру, на Java вывод идёт последовательно до исключения и программа завершает работу.
Приведу примеры:

 array = [1,2,3,4,5,6,7]
print(array[0])
print(array[1])
print(array[2])
print(array[3])
print(array[4])
print(array[5])
print(array[10])
 
"Output
1
Traceback (most recent call last):
2
3
 File "C:/Users/admin/PycharmProjects/firstProject/firstTest.py", line 8, in <module>
4
5
6
   print(array[10])
IndexError: list index out of range
"

 public class Main{
    public static void main(String[] args){
    int[] array = new int[]{5,3,1};
    System.out.println(array[0]);
    System.out.println(array[1]);
    System.out.println(array[2]);
    System.out.println(array[3]);
}
}
//Output
5
3
1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
        at Main.main(Main.java:7)

Как видно, в Java вывод идёт последовательно до исключительной ситуации, в то время как в Python вывод идёт вперемешку с Tracebeck.
Подскажите, с чем это связано?

Офлайн

#2 Окт. 5, 2019 00:42:43

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Tracebeck

jantex69
Подскажите, с чем это связано?
вероятно с тем, что ваша программа направляет stdout и stderr в один и тот же дескриптор



Офлайн

#3 Окт. 5, 2019 05:52:31

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Tracebeck

jantex69
Подскажите, с чем это связано?

FishHook
направляет stdout и stderr в один и тот же дескриптор
Ну и что что в один файл?
У меня на команду python aaa.py >a 2>&1
 1
2
3
4
5
6
Traceback (most recent call last):
  File "aaa.py", line 8, in <module>
    print(array[10])
IndexError: list index out of range
И в консоль естественно также. И никогда по другому и не было.
jantex69 Как вы это сделали?
Не поленился, запустил Pycharm (comm 2016), попил чай пока он запускался. (Pycharm я практически не использую)
О сколько нам открытий чудных готовят новички.
В самом деле каша!
Это Баг среды разработки которая так вычерпывает stdout stderr.
Ни одна нормальная среда разработки так не делает. Под винду ну например pyscripter возьмите или покопайтесь в настройках pycharm.



Отредактировано doza_and (Окт. 5, 2019 06:12:39)

Офлайн

#4 Окт. 5, 2019 08:35:55

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Tracebeck

у меня не воспроизводится wing, spyder, jupiter, pyscripter, pycharm (ubuntu, windows)



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Окт. 5, 2019 16:21:23)

Офлайн

#5 Окт. 5, 2019 11:47:36

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Tracebeck

У Wing свои тараканы (баги): достаточно большие данные выводит не по порядку (в окне отладки, а вывод в файл нормальный)

Отредактировано rami (Окт. 5, 2019 11:49:07)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version