Перейти к содержимому

Фотография

Кто знает причины неоднозначного поведения try-catch?

javascript try-catch units

  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 aksas

aksas

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:Харьков

Отправлено 17 июня 2014 - 10:41

Тема try-catch поднималась неоднократо, в хелпе тесткомплита про ограничения try-catch тоже написано, но я столкнулся с поведением, которое поставило меня в тупик.
Итак, есть модуль 1

function factory(callback){
 return {
          run:function(v){
		try{
			callback.call(v);
		}catch(e){						
                        Log.Message("in factory");
		}
	  }
  }
}

а в модуле 2

function test(){
 var o = factory(function(){this.someMethod();});
 o.run({});
}

Если запустить тест в таком виде, то try-catch в модуле 1 не отработает и тесткомплит ругнется "Microsoft JScript runtime error. Object doesn't support this property or method"
Но стоит сделать вот так

function test(){
 var o = factory(function(){this.someMethod();});
 try{
    o.run({});
 }catch(e){
    Log.Message("in test");
 }
}

и все отработает нормально, а в логе будет одна запись: "in factory".
Т.е. try-catch в тесте никаких ошибок не ловит и при этом каким-то магичиским образом влияет на работу try-catch в другом модуле.
 
Если честно, то я в растерянности. Может кто нибудь встречал/знает объяснение такого поведения? (testcomplete 9.3)


  • 0

#2 aksas

aksas

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:Харьков

Отправлено 23 июня 2014 - 11:03

Неужели ни у кого нет никаких предположений?


  • 0



Темы с аналогичным тегами javascript, try-catch, units

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных