|
|
|
Как временно отключить обработку ошибок
|
|||
|---|---|---|---|
|
#18+
Работаю на MSSQL 2000. Я хочу проверить наличие временной таблицы. Пишу такой код: CREATE PROCEDURE РежимРепликации AS BEGIN select count(*) from #T1; if @@error=0 return (1) else return (0); END GO После оператора Select происходит ошибка ( естественно) и процедура не может возвратить ни Да ни Нет. Подскажите, как на время отключить генерацию ошибки (прерывания, исключения), а затем восстановить режим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 19:14:04 |
|
||
|
Как временно отключить обработку ошибок
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 19:25:36 |
|
||
|
Как временно отключить обработку ошибок
|
|||
|---|---|---|---|
|
#18+
Скажите, а как же быть с Error Handling? Как перехватить ошибку, подобную этой? Уважаемая СуКа вопрос обошла, но не решила. Викентий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2002, 22:53:53 |
|
||
|
Как временно отключить обработку ошибок
|
|||
|---|---|---|---|
|
#18+
А зачем перехватывать ошибки? Ошибки надо не допускать. И 3JIA9I CyKA ответил совершенное правильно. Его решение снимает проблему? Ответ - да. Самый лучший способ решения проблем - создание условий, при которых они не возникают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2002, 00:19:25 |
|
||
|
Как временно отключить обработку ошибок
|
|||
|---|---|---|---|
|
#18+
Может Вы научите нас всех и Microsoft не делать ошибок? Я предлагаю следующее: Ошибки с severity level > 15 фатальные, (смотри: http://www.idisoft.com/products/sample/errors/exceptions.htm в этом случае Ваше задание делает rollback и происходит прерывание. Запуская select * from T где Т не существует, генерирует ошибку 208 и level = 16, т.е. возникает фатальная ошибка Поэтому и вываливаетесь сразу и след. шаг игнорируется. Мое предложение. Уложить этот select в stored procedure а ее в свою очередь в другую, которая и будет перехватывать @@error, т.е. create procedure test_inner AS select * from ASGFDDFGFGFGF -- jumping out having fatal error = 208 --... doesnt matter select @@error create procedure test_out AS exec testinner select @@error execute test2 -- the error from the test_inner will be traped. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2002, 03:25:23 |
|
||
|
Как временно отключить обработку ошибок
|
|||
|---|---|---|---|
|
#18+
Извините, последнюю строку замените на execute test_out -- the error from the test_inner will be traped ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2002, 17:30:38 |
|
||
|
Как временно отключить обработку ошибок
|
|||
|---|---|---|---|
|
#18+
К сожалению научить писать программы без ошибок я не могу, так как не умею так писать сам. Но по моему мнению обработчики ошибок должны обрабатывать только ошибки, не обнаруживемые иначе, как через исключительные ситуации (силился придумать какой-нибудь пример, но так и не смог, в личной практике такого не случалось). При разработке проекта, когда еще точно не видны все грабли, это допустимо и полезно. Но в готовом проекте никаких исключительных ситуаций не должно быть. Опять же по-моему мнению, проверка чего-либо через генерацию ошибки не является хорошим стилем программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2002, 21:20:22 |
|
||
|
Как временно отключить обработку ошибок
|
|||
|---|---|---|---|
|
#18+
Пардон, а здесь речь не идет о генерации ощибки, я пытаюсь перехватить фатальную ошибку и смочь анализировать ее в рамках текущей сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2002, 21:40:23 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32042335&tid=1821218]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
102ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 387ms |

| 0 / 0 |
