Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Диспатч ошибки, для множества функций (http://www.flasher.ru/forum/showthread.php?t=153790)

in4core 08.04.2011 20:49

Диспатч ошибки, для множества функций
 
Есть допустим у нас 1000* однотипных функций, делающих одно и тоже, за маленьким исключением в каждой. Задача следующая

Код AS3:

public function start(num , ...rest) {
      this['func'+num]();
}

Мне нужно диспатчить ошибку, если такой функции не существует. Естественно и сам флеш это сделает ( 1006 ), но мне нужно свою ошибку ловить. Каков самый оптимальный алгоритм ?

Jewelz 08.04.2011 20:56

а если в try catch обернуть?

in4core 08.04.2011 21:00

можно попробовать! спасибо

Добавлено через 23 минуты
Код AS3:

try {
 
                                func()
 
                                } catch (e:*) {
 
                                        throw new IllegalOperationError("element doesn't exist" , 1000);
                                }

А не будет ли это выглядеть быдлокодом? Или пишется просто подругому?

i.o. 08.04.2011 22:19

Цитата:

А не будет ли это выглядеть быдлокодом?
По-моему бОльшим быдлокодом выглядит:
Код AS3:

public function start('func_number' , ...rest) {
      this['func'+num]();
}

Вроде во флеше не первый день, а пишете чушь. Это ведь даже не скомпилится..
Цитата:

Мне нужно диспатчить ошибку, если такой функции не существует. Естественно и сам флеш это сделает ( 1006 ), но мне нужно свою ошибку ловить. Каков самый оптимальный алгоритм ?
Проблема не ясна. Тема не раскрыта.

in4core 08.04.2011 23:36

Цитата:

Вроде во флеше не первый день, а пишете чушь. Это ведь даже не скомпилится..
Да что вы ?? А не стыдно вам?

Код AS3:

public class Test() {
 
  public static function a(c:String) {
 
    Test['c'+'1']();
  }
  public static function someName1() {
  trace('Я во флеше давно и даю умные советы, а так же не понимаю смысла тем')
  }
}
 
Test.a('someName');

Добавлено через 3 минуты
Оффтоп

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

Test('element1');

где в Test - private static function element1() {} ....... elementN() {}

i.o. 08.04.2011 23:46

Цитата:

Сообщение от in4core (Сообщение 987808)
Да что вы ?? А не стыдно вам?

Неа :)
Цитата:

function start('func_number' , ...rest)
Ну а по теме - тема не раскрыта.

in4core 08.04.2011 23:48

Цитата:

Неа
Ну тогда зайдите и проверьте мой последний код скомпилится он или нет, во вторых изначально вопрос был в другом, и мне лень было писать все верно. вопрос был про диспатч ошибки. Ответить нечего - не пишите.

i.o. 08.04.2011 23:55

Цитата:

вопрос был про диспатч ошибки
ответ про диспатч ошибки:
Код AS3:

this.dispatchEvent( new ErrorEvent(ErrorEvent.ERROR, false, false, 'OMG. I`ve got an error..') );


cleptoman 09.04.2011 00:13

Код AS3:

public function start(num , ...rest):void {
 
if(('func'+num) in this){
//do
return;
}
//throw
}

не?

in4core 09.04.2011 00:17

@cleptoman тоже интересный вариант спасиб. Ни разу не видел опереатора in вне цикла, работает?

Добавлено через 1 минуту
Да кстати у меня там статика, так что this работать не будет


Часовой пояс GMT +4, время: 13:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.