2013-07-09 2 views
1

Предположим, у нас есть этот дротик код:Понимание механизма обработки исключений (управление потоком) в Дарта

void main() { 
    try { 
    try { 
     throw null; 
    } catch(e) { 
     throw null; 
    } finally { 
     print('first'); 
    } 
    } finally { 
    print('second'); 
    } 
} 

При выполнении этого кода в браузере с помощью http://try.dartlang.org

Произведенный результат очень ожидаемый.

first 
second 
Uncaught Throw of null. 

Но при запуске этого кода в Dart VM результат получается очень неожиданным.

second 
Unhandled exception: Throw of null. 

Это выглядит как первый блок терминации (finally) никогда не будут выполнены.

Я не могу понять это поведение механизма обработки исключений.

Конечно, мы можем предположить, что это ошибка. Но обработка исключений является краеугольным камнем любой системы. Как разработчики Dart могут объяснить это несоответствие?

P.S.

Я думаю, что этот вопрос, связанный с темой «о программировании» и спрашивающей его здесь, является правильным местом и временем?

ответ

2

Это, кажется, ошибка в VM, насколько я могу судить. Я подал ошибку:

https://code.google.com/p/dart/issues/detail?id=11758&thanks=11758&ts=1373396821

Я хотел бы добавить, что в то время как код является иллюстрацией отличающегося VM и dart2js реализации, немного ошибок. Если вы чувствуете, что ваш блок catch собирается бросить, оберните код внутри блока catch в пределах своего собственного try-catch.

И, да, я согласен, что это прекрасный вопрос, который нужно задать в StackOverflow. Спасибо, что опубликовали это.

+0

Похоже, что ошибка была исправлена ​​где-то между r24275 и r24868, поэтому исправление должно быть включено в следующую версию. –

+0

Спасибо, что указали это, Darshan Computing. –

+0

@ShailenTuli Спасибо за все. Иногда тесты состоят в основном из простых синтетических (подверженных ошибкам) ​​шаблонов. Это помогает найти неожиданное поведение. В реальной жизни все намного сложнее. Я надеюсь, что исправление этой проблемы может сэкономить время другим потенциальным пользователям. – mezoni

Смежные вопросы