|  | 
|  16.12.2005, 13:27 | #1 | 
| Moderator | 
			
			Возникло две мысли 1. Причина того что мы видим одну ошибку -- после генерации исключительной ситуации оператором throw за ним ничего выполняется. Можно заменить все участвующие в обработке накладной операторы throw на что-нибудь менее жесткое. Чревато непредсказуемыми последствиями и трудоемко. 2. Чтобы логика алгоритма продолжалось после throw, однажды я использовал вложенные try..catch -- помогло. | 
|  | 
|  16.12.2005, 14:01 | #2 | 
| Участник |   Цитата: 
		
			Сообщение от DreamCreator
			
			 Возникло две мысли 1. Причина того что мы видим одну ошибку -- после генерации исключительной ситуации оператором throw за ним ничего выполняется. Можно заменить все участвующие в обработке накладной операторы throw на что-нибудь менее жесткое. Чревато непредсказуемыми последствиями и трудоемко. 2. Чтобы логика алгоритма продолжалось после throw, однажды я использовал вложенные try..catch -- помогло. | 
|  | 
|  16.12.2005, 14:09 | #3 | 
| Moderator | Цитата: 
		
			Сообщение от Hans
			
			 первый метод работает, если заменить throw на что-нить вроде checkFailed(), можно ли поступать таким образом. Пострадает ли от этого функционал? | 
|  | 
|  16.12.2005, 14:16 | #4 | 
| Участник | Цитата: 
		
			Сообщение от DreamCreator
			
			 Да, пострадает. Потому как checkFailed это аналог info (поправьте если не так), отличие только в иконке, таким образом несмотря на ошибку алгоритм не прервется как задумывалось ранее, а продолжится. И нет никакой гарантии что продолжится верно (ошибка ведь была -- допустим что-то не инициализировалось). Поэтому и трудоемко будет все переделывать. | 
|  | 
|  20.12.2005, 13:01 | #5 | 
| Участник | Цитата: 
		
			Сообщение от Hans
			
			 Вот это меня и интересует, мы не можем заменить throw, так как не знаем какая ошибка будет последней,  я дошел до 6 ошибок в разных методах таблиц и классов, и когда необходимо будет делать прерывание чтобы накладная не оприходовалась. Дальше я вряд ли смогу что-нибудь придумать (уровень не позволяет), наверное лучше оставить стандартный функционал. Спасибо! | 
|  | 
|  22.12.2005, 14:30 | #6 | 
| Участник | Цитата: 
		
			Сообщение от Migel_84
			
			 А как насчёт использовать логическую переменную? Убрать throw и, если хоть одна ошибка будет присвоить переменной true, а при оприходовании проверять, если переменная равна true, то не оприходовать | 
|  | 
|  20.12.2005, 12:58 | #7 | 
| Участник | Цитата: 
		
			Сообщение от DreamCreator
			
			 Потому как checkFailed это аналог info (поправьте если не так) if (условие) ret = checkfailed(какая-то ошибка); else ret = super(); return ret; поправьте если не так | 
|  | 
|  20.12.2005, 13:02 | #8 | 
| Moderator | Цитата: 
		
			Сообщение от Migel_84
			
			 Не так. info просто выводит сообщение, а checkfailed можно возвращать вместо супер Как раз сегоня воспользовался: PHP код: 
			 | 
|  |