Π Π°Π±ΠΎΡ‚Π° с ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 β€” Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΈ отказоустойчивых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сталкиваСтся с Π½Π΅ΡˆΡ‚Π°Ρ‚Π½ΠΎΠΉ ситуациСй, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ошибки ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π½ΠΎ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ быстрСС Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π³. Однако стандартныС сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ содСрТат ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ затрудняСт диагностику.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ всС доступныС способы Π²Ρ‹Π²ΠΎΠ΄Π° ошибок Π² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ… 1Π‘ β€” ΠΎΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… конструкций ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΈΠΊ с использованиСм Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅() ΠΈ ОписаниСОшибки(). Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΈ, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ трассировку стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки Π² внСшниС систСмы ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ошибкам программистов ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ ΠΈ способам ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ.

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΊ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ 1Π‘, Ρ‚Π°ΠΊ ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ спСциалистам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои знания. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° протСстированы Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.23 ΠΈ Π²Ρ‹ΡˆΠ΅. Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ со ΡΡ‚Π°Ρ€ΡˆΠΈΠΌΠΈ Ρ€Π΅Π»ΠΈΠ·Π°ΠΌΠΈ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ β€” ΠΎΠ± этом ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ упомянСм Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ….

1. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² 1Π‘

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ β€” основа Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ошибками Π² 1Π‘. Она позволяСт "ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ" ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ вмСсто Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис выглядит Ρ‚Π°ΠΊ:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

// Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = 10 / 0;

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

// Код ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибки

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка: " + ОписаниСОшибки());

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π° ноль сработаСт Π±Π»ΠΎΠΊ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ сообщСниС с описаниСм ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Однако Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ ограничСния:

  • πŸ”Ή Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС Π±ΡƒΠ΄Π΅Ρ‚ стандартным, Π±Π΅Π· Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ контСкста
  • πŸ”Ή НСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ мСстС возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅
  • πŸ”Ή НС сохраняСтся история ошибок для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°

Для получСния Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠ΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅(). Она Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ структуру с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ ошибки, ΠΌΠΎΠ΄ΡƒΠ»Π΅, строкС ΠΊΠΎΠ΄Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠΠ΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°ΡΠ€ΡƒΠ½ΠΊΡ†ΠΈΡ();

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Ошибка = Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅();

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½("Ошибка: %1

ΠœΠΎΠ΄ΡƒΠ»ΡŒ: %2

Π‘Ρ‚Ρ€ΠΎΠΊΠ°: %3",

Ошибка.ОписаниС, Ошибка.ΠœΠΎΠ΄ΡƒΠ»ΡŒ, Ошибка.НомСрБтроки));

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

πŸ’‘

ВсСгда Π²ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ запись Π² ΠΆΡƒΡ€Π½Π°Π» рСгистрации Ρ‡Π΅Ρ€Π΅Π· Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ–ΡƒΡ€Π½Π°Π»Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ() β€” это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ошибки Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π±Π°Π·Π΅, Π³Π΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ().

2. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ошибкС

Ѐункция ОписаниСОшибки() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку с ΠΏΠΎΠ»Π½Ρ‹ΠΌ описаниСм послСднСй возникшСй ошибки, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ошибка происходит Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² сСрвСрных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΠ’Π½Π΅ΡˆΠ½ΡŽΡŽΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ("ΠΠ΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉΠ€Π°ΠΉΠ».dll");

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ПолноСОписаниС = ОписаниСОшибки();

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ›ΠΎΠ³(ПолноСОписаниС); // БохраняСм Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π›Π΅Π²(ПолноСОписаниС, 200) + "..."); // ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡΠΎΠΊΡ€Π°Ρ‰Ρ‘Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

Для Π°Π½Π°Π»ΠΈΠ·Π° стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΏΡ€ΠΈΠ²Π΅Π΄ΡˆΠΈΡ… ΠΊ ошибкС) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ свойство Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅().Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ². Π­Ρ‚ΠΎ массив строк, Π³Π΄Π΅ каТдая строка содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π΅ строки:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠžΠΏΠ°ΡΠ½ΡƒΡŽΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ();

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Ошибка = Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅();

Для КаТдого Π’Ρ‹Π·ΠΎΠ² Из Ошибка.Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ² Π¦ΠΈΠΊΠ»

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ–ΡƒΡ€Π½Π°Π»Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ(Π’Ρ‹Π·ΠΎΠ², Π£Ρ€ΠΎΠ²Π΅Π½ΡŒΠ–ΡƒΡ€Π½Π°Π»Π°.Ошибка);

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠœΠ΅Ρ‚ΠΎΠ΄ получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ
ОписаниСОшибки() Π‘Ρ‚Ρ€ΠΎΠΊΠ°
Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ОписаниСОшибки());
Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½ΠΎ Π±Π΅Π· структурированных Π΄Π°Π½Π½Ρ‹Ρ…
Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅() Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°
Ошибка = Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅();
Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, строку, Ρ‚ΠΈΠΏ ошибки ΠΈ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²
Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅().Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ² Массив строк
Для КаТдого Π’Ρ‹Π·ΠΎΠ² Из Ошибка.Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ² Π¦ΠΈΠΊΠ»
ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΏΡ€ΠΈΠ²Π΅Π΄ΡˆΡƒΡŽ ΠΊ ошибкС
БтатусВыполнСния() Число
Если БтатусВыполнСния() = 2 Π’ΠΎΠ³Π΄Π°
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 2 ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄Π° ошибок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ОписаниСОшибки()
Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅()
БобствСнныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ логирования
НС ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

3. Π’Ρ‹Π²ΠΎΠ΄ ошибок Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС

Показ ошибок нСпосрСдствСнно ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ баланса ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ() ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π½ΠΎ Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… систСмах Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

  • πŸ“Œ ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ Ρ‡Π΅Ρ€Π΅Π· ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅() β€” для Π½Π΅ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ошибок
  • πŸ“Œ Окна сообщСний с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΠ’ΠΎΠΏΡ€ΠΎΡ() β€” ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • πŸ“Œ БтатусныС ΠΏΠ°Π½Π΅Π»ΠΈ β€” для отобраТСния тСхничСских ошибок Π±Π΅Π· прСрывания Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ кастомизированного Π²Ρ‹Π²ΠΎΠ΄Π° ошибки с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅Π˜Π·Π€Π°ΠΉΠ»Π°(ΠŸΡƒΡ‚ΡŒΠšΠ€Π°ΠΉΠ»Ρƒ);

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Ошибка = Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅();

ВСкстБообщСния = "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»: " + ?(ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°(Ошибка.ОписаниС),

"нСизвСстная ошибка", Ошибка.ОписаниС) + "

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ

2. Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

3. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ ΠΏΠΎΠ·ΠΆΠ΅";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΠ’ΠΎΠΏΡ€ΠΎΡ(ВСкстБообщСния, , "ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ|ΠžΡ‚ΠΌΠ΅Π½Π°");

Если Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = 0 Π’ΠΎΠ³Π΄Π°

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅Π˜Π·Π€Π°ΠΉΠ»Π°(ΠŸΡƒΡ‚ΡŒΠšΠ€Π°ΠΉΠ»Ρƒ); // ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ тСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ ошибок (Π½ΠΎΠΌΠ΅Ρ€Π° строк, ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ) Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… систСмах. Π­Ρ‚ΠΎ создаёт риски бСзопасности ΠΈ ΠΏΡƒΡ‚Π°Π΅Ρ‚ нСтСхничСских ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π»ΠΎΠ³Π°Ρ… для администраторов.

4. Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ошибок для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°

БистСмноС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ элСмСнт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ 1Π‘-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Π΅ΡΡ‚ΡŒ нСсколько встроСнных ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ²:

  1. Π–ΡƒΡ€Π½Π°Π» рСгистрации β€” Ρ‡Π΅Ρ€Π΅Π· Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ–ΡƒΡ€Π½Π°Π»Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ() ΠΈΠ»ΠΈ Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ›ΠΎΠ³() (для Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ логирования)
  2. РСгистрация событий β€” Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ»Π°Π½Ρ‹ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ спСциализированныС рСгистры свСдСний
  3. Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ систСмы β€” ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ошибок Π² Sentry, ELK ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сСрвисы ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ комплСксного логирования с сохранСниСм Π² ΠΆΡƒΡ€Π½Π°Π» ΠΈ Ρ„Π°ΠΉΠ»:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠžΡˆΠΈΠ±ΠΊΡƒΠ’Π›ΠΎΠ³(Ошибка, Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°ΡΠ˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ = "")

ВСкстЛога = Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½("Ошибка: %1

ΠœΠΎΠ΄ΡƒΠ»ΡŒ: %2

Π‘Ρ‚Ρ€ΠΎΠΊΠ°: %3

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: %4

Π‘Ρ‚Π΅ΠΊ: %5",

Ошибка.ОписаниС, Ошибка.ΠœΠΎΠ΄ΡƒΠ»ΡŒ, Ошибка.НомСрБтроки,

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°ΡΠ˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ, Π‘Ρ‚Ρ€ΠΎΠΊΠ°(Ошибка.Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ²));

// 1. Π—Π°ΠΏΠΈΡΡŒ Π² ΠΆΡƒΡ€Π½Π°Π» рСгистрации 1Π‘

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ–ΡƒΡ€Π½Π°Π»Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ(ВСкстЛога, Π£Ρ€ΠΎΠ²Π΅Π½ΡŒΠ–ΡƒΡ€Π½Π°Π»Π°.Ошибка, , , "ΠžΡˆΠΈΠ±ΠΊΠΈΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ");

// 2. Π—Π°ΠΏΠΈΡΡŒ Π² тСкстовый Ρ„Π°ΠΉΠ» (для Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ хранСния)

ΠŸΡƒΡ‚ΡŒΠšΠ€Π°ΠΉΠ»ΡƒΠ›ΠΎΠ³Π° = ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹() + "Logs\Errors.log";

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ’Π΅ΠΊΡΡ‚(ΠŸΡƒΡ‚ΡŒΠšΠ€Π°ΠΉΠ»ΡƒΠ›ΠΎΠ³Π°, ВСкстЛога, ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Π’Π΅ΠΊΡΡ‚Π°.UTF8, РСТимЗаписиВСкста.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ);

// 3. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π²ΠΎ внСшнюю систСму (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Sentry)

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

HTTPЗапрос = Новый HTTPЗапрос("https://sentry.io/api/...");

HTTPЗапрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ’Π΅Π»ΠΎΠ˜Π·Π‘Ρ‚Ρ€ΠΎΠΊΠΈ(ВСкстЛога);

HTTPΠ‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ = Новый HTTPΠ‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅;

ΠžΡ‚Π²Π΅Ρ‚ = HTTPΠ‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(HTTPЗапрос);

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

// Если ошибка ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ - ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ, Π³Π»Π°Π²Π½ΠΎΠ΅ сохранили локально

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹;

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ошибки (GUID)

Π”Π°Ρ‚Π° ΠΈ врСмя возникновСния

Вип и описаниС ошибки

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ строка ΠΊΠΎΠ΄Π°

Π”Π°Π½Π½Ρ‹Π΅ контСкста (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π°, значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…)-->

Для Π°Π½Π°Π»ΠΈΠ·Π° Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹Ρ… ошибок ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ ΠΏΠΎ ΠΆΡƒΡ€Π½Π°Π»Ρƒ рСгистрации ΠΈΠ»ΠΈ спСциализированныС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‡Ρ‘Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚:

  • πŸ“Š Π’ΠΎΠΏ-10 самых частых ошибок Π·Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄
  • πŸ“Š Π”ΠΈΠ½Π°ΠΌΠΈΠΊΡƒ возникновСния ошибок ΠΏΠΎ дням/нСдСлям
  • πŸ“Š Бвязь ошибок с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈΠ»ΠΈ ролями

5. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённыС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ:

Ошибка ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡ Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ
ΠŸΡƒΡΡ‚ΠΎΠΉ Π±Π»ΠΎΠΊ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ошибка "глотаСтся", ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° остаётся Π½Π΅Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ ВсСгда Π»ΠΎΠ³ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π΄Π°ΠΆΠ΅ Ссли Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Ρ‘ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
ИспользованиС ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π² Π±Π»ΠΎΠΊΠ΅ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Код послС ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ выполнится, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ошибки Π½Π΅ Π±Ρ‹Π»ΠΎ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ состояниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ
Ловля всСх ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π’Ρ€ΡƒΠ΄Π½ΠΎ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ, особСнно ΠΏΡ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ нСсколько Π±Π»ΠΎΠΊΠΎΠ² ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ
Π’Ρ‹Π²ΠΎΠ΄ тСхничСских Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠŸΡƒΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, создаёт риски бСзопасности ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ понятныС сообщСния, тСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ β€” Π² Π»ΠΎΠ³ΠΈ

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Если Π² Π±Π»ΠΎΠΊΠ΅ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ происходит новая ошибка, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ информация ΠΎΠ± ошибкС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ. Π§Ρ‚ΠΎΠ±Ρ‹ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, сохраняйтС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± ошибкС Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ сразу послС Π΅Ρ‘ возникновСния:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

// Основной код

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°ΡΠžΡˆΠΈΠ±ΠΊΠ° = Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅(); // БохраняСм сразу!

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

// Код ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΠ°ΡΡ‚ΡŒ

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΠ£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅(ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°ΡΠžΡˆΠΈΠ±ΠΊΠ°);

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

// Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ всё Π΅Ρ‰Ρ‘ ΠΈΠΌΠ΅Π΅ΠΌ доступ ΠΊ ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°ΡΠžΡˆΠΈΠ±ΠΊΠ°

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ’Π›ΠΎΠ³(ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°ΡΠžΡˆΠΈΠ±ΠΊΠ°, "Ошибка ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅: " + ОписаниСОшибки());

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ вСрсиях 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π½ΠΈΠΆΠ΅ 8.3.10 функция Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅() Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для сСрвСрных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° старых вСрсий, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ трассировку Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€.

6. ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ: созданиС собствСнных классов ошибок

Для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС классы ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для логирования. НапримСр:

ΠŸΠ΅Ρ€Π΅ΠΌ ΠΌΠ­ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ€ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠžΡˆΠΈΠ±ΠΎΠΊ;

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΡ€ΠΈΠ‘ΠΎΠ·Π΄Π°Π½ΠΈΠΈΠžΠ±ΡŠΠ΅ΠΊΡ‚Π°()

ΠΌΠ­ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ€ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠžΡˆΠΈΠ±ΠΎΠΊ = Новый ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠžΡˆΠΈΠ±ΠΎΠΊ();

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ()

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

// Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡΠšΠ’Π½Π΅ΡˆΠ½Π΅ΠΌΡƒΠ‘Π΅Ρ€Π²ΠΈΡΡƒ();

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠΌΠ­ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ€ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠžΡˆΠΈΠ±ΠΎΠΊ.ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ(

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅(),

"ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°ΡΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ",

Π­Ρ‚ΠΎΡ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ());

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π›ΠΎΠΆΡŒ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹;

РСализация класса ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠžΡˆΠΈΠ±ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ:

  • πŸ”§ АвтоматичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ уровня критичности ошибки
  • πŸ”§ ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ (ΠΊΠΎΠΌΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ: администратору, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ)
  • πŸ”§ Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с систСмами Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΎΠ² (Jira, Redmine)
  • πŸ”§ ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… сбоСв
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒΠŸΡ€ΠΈΠžΡˆΠΈΠ±ΠΊΠ΅

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒΠŸΡ€ΠΈΠžΡˆΠΈΠ±ΠΊΠ΅(ДСйствиС, ΠœΠ°ΠΊΡΠŸΠΎΠΏΡ‹Ρ‚ΠΎΠΊ = 3, Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ°Π‘Π΅ΠΊ = 1)

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° = 1;

ПослСдняяОшибка = НСопрСдСлСно;

Пока ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° <= ΠœΠ°ΠΊΡΠŸΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π¦ΠΈΠΊΠ»

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ДСйствиС.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ПослСдняяОшибка = Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅();

Если ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° < ΠœΠ°ΠΊΡΠŸΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π’ΠΎΠ³Π΄Π°

ΠŸΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ(Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ°Π‘Π΅ΠΊ);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° = ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° + 1;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ПослСдняяОшибка.ОписаниС;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹;

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с внСшними систСмами (Π²Π΅Π±-сСрвисами, ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ), Π³Π΄Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ сбои β€” Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ ситуация. НапримСр, ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с 1Π‘:EDT ΠΈΠ»ΠΈ Π”ΠΈΠ°Π΄ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ автоматичСски ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ запрос нСсколько Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

7. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с систСмами ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°

Для ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ эксплуатации 1Π‘-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ критичСски Π²Π°ΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с систСмами ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Π­Ρ‚ΠΎ позволяСт:

  • πŸ“ˆ ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ частоту возникновСния ошибок Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
  • πŸ“ˆ ΠšΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки с Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π½Π° систСму
  • πŸ“ˆ АвтоматичСски ΡΡΠΊΠ°Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ критичСскиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ:

БистСма ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Как ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
Sentry Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ошибок, увСдомлСния Π² Slack/Telegram Π§Π΅Ρ€Π΅Π· HTTP-запросы ΠΊ ΠΈΡ… API с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ± ошибкС Π² JSON
ELK Stack Π“ΠΈΠ±ΠΊΠΈΠΉ поиск ΠΏΠΎ Π»ΠΎΠ³Π°ΠΌ, визуализация Π΄Π°Π½Π½Ρ‹Ρ… Π² Kibana ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π»ΠΎΠ³ΠΎΠ² Π² Logstash ΠΈΠ»ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² Elasticsearch
Zabbix ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ доступности, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ Π½Π° критичСскиС ошибки Π§Π΅Ρ€Π΅Π· Zabbix Sender ΠΈΠ»ΠΈ внСшниС скрипты
1Π‘:Π›ΠΈΠ½ΠΊ Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для 1Π‘, интСграция с 1Π‘:Fresh Π§Π΅Ρ€Π΅Π· стандартныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ошибки Π² Sentry:

Ѐункция ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΠ’Sentry(Ошибка, Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅ = НСопрСдСлСно)

URL = "https://ΠΎΠΎΡ€Ρ€sss@sentry.io/1234567";

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ = Новый БоотвСтствиС;

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Content-Type", "application/json");

Π’Π΅Π»ΠΎ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°;

Π’Π΅Π»ΠΎ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("event_id", Π‘Ρ‚Ρ€ΠΎΠΊΠ°(Новый Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€));

Π’Π΅Π»ΠΎ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("level", "error");

Π’Π΅Π»ΠΎ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("logger", "1c-application");

Π’Π΅Π»ΠΎ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("message", Ошибка.ОписаниС);

Π’Π΅Π»ΠΎ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("extra", Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("stacktrace,Ошибка.Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ²,

"context", Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅));

Запрос = Новый HTTPЗапрос(URL);

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ’Π΅Π»ΠΎΠ˜Π·Π‘Ρ‚Ρ€ΠΎΠΊΠΈ(Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒJSON(Π’Π΅Π»ΠΎ));

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ(Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ);

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

ΠžΡ‚Π²Π΅Ρ‚ = Новый HTTPΠ‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(Запрос);

Если ΠžΡ‚Π²Π΅Ρ‚.ΠšΠΎΠ΄Π‘ΠΎΡΡ‚ΠΎΡΠ½ΠΈΡ <> 200 Π’ΠΎΠ³Π΄Π°

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ–ΡƒΡ€Π½Π°Π»Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ("Ошибка ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π² Sentry: " + ΠžΡ‚Π²Π΅Ρ‚.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ’Π΅ΠΊΡΡ‚(),

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒΠ–ΡƒΡ€Π½Π°Π»Π°.Ошибка);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ–ΡƒΡ€Π½Π°Π»Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ("НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Sentry: " + ОписаниСОшибки(),

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒΠ–ΡƒΡ€Π½Π°Π»Π°.Ошибка);

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с внСшними систСмами ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ трСбования ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. НС ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π² Π»ΠΎΠ³ΠΈ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ бизнСс-ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π±Π΅Π· ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.

8. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅

ИспользованиС ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ (Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ()) Π² Π±Π»ΠΎΠΊΠ°Ρ… Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ сообщСниС ΠΎΠ± ошибкС Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π½Π° строкС с Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ:

  • πŸ› οΈ ПошаговоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (F11) с Π·Π°Ρ…ΠΎΠ΄ΠΎΠΌ Π² Π±Π»ΠΎΠΊ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  • πŸ› οΈ ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ возникновСния ошибки
  • πŸ› οΈ ИспользованиС Ρ‚ΠΎΡ‡Π΅ΠΊ останова с условиСм Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ошибок
  • πŸ› οΈ ВСстированиС ΠΊΠΎΠ΄Π° с искусствСнным Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Для слоТных сцСнариСв ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ тСстовыС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‚ ошибки Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ срСдС. НапримСр:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒΠžΡˆΠΈΠ±ΠΎΠΊ()

// ВСст 1: Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = 1 / 0;

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠžΡˆΠΈΠ±ΠΊΡƒ(Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅(), "Π”Π΅Π»Π΅Π½ΠΈΠ΅ΠΠ°ΠΠΎΠ»ΡŒ");

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

// ВСст 2: Ошибка Ρ‚ΠΈΠΏΠ°

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Π°ΡΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ = "ΠΏΡ€ΠΈΠ²Π΅Ρ‚";

Число = Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Π°ΡΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ + 10;

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠžΡˆΠΈΠ±ΠΊΡƒ(Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅(), "ОшибкаВипа");

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

// ВСст 3: Ошибка доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠ’Π΅ΠΊΡΡ‚("C:\Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ_Ρ„Π°ΠΉΠ».txt");

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠžΡˆΠΈΠ±ΠΊΡƒ(Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅(), "ОшибкаЀайла");

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹;

Для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ 1Π‘. Иногда Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы, особСнно Ссли ошибки Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ часто (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ массовой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…).

πŸ’‘

ВсСгда тСстируйтС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² условиях, максимально ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊ Π±ΠΎΠ΅Π²Ρ‹ΠΌ. Ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈΠ»ΠΈ спСцифичСских Π΄Π°Π½Π½Ρ‹Ρ…, часто ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ стандартном тСстировании.

FAQ: ЧастыС вопросы ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ Π² 1Π‘

Как ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ критичСскиС ошибки ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ?

Π’ 1Π‘ Π½Π΅Ρ‚ встроСнной классификации ошибок ΠΏΠΎ критичности, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. НапримСр:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ пСрСчислСниС Π£Ρ€ΠΎΠ²Π½ΠΈΠžΡˆΠΈΠ±ΠΎΠΊ с значСниями "ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ", "ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅", "Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ"
  2. Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ тСкст ошибки ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π³Π΄Π΅ ΠΎΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π°
  3. На основС Π°Π½Π°Π»ΠΈΠ·Π° присваивайтС ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Ѐункция ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΠ£Ρ€ΠΎΠ²Π΅Π½ΡŒΠžΡˆΠΈΠ±ΠΊΠΈ(Ошибка)

Π’Π΅ΠΊΡΡ‚ΠžΡˆΠΈΠ±ΠΊΠΈ = НРСг(Ошибка.ОписаниС);

Если Найти(Π’Π΅ΠΊΡΡ‚ΠžΡˆΠΈΠ±ΠΊΠΈ, "Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль") <> 0 Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π£Ρ€ΠΎΠ²Π½ΠΈΠžΡˆΠΈΠ±ΠΎΠΊ.ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ;

Π˜Π½Π°Ρ‡Π΅Π•ΡΠ»ΠΈ Найти(Π’Π΅ΠΊΡΡ‚ΠžΡˆΠΈΠ±ΠΊΠΈ, "Ρ„Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½") <> 0 Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π£Ρ€ΠΎΠ²Π½ΠΈΠžΡˆΠΈΠ±ΠΎΠΊ.ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π£Ρ€ΠΎΠ²Π½ΠΈΠžΡˆΠΈΠ±ΠΎΠΊ.ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ; // По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ критичСскиС

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

МоТно Π»ΠΈ Π»ΠΎΠ²ΠΈΡ‚ΡŒ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² транзакциях?

Π”Π°, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли ошибка ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, всС измСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ° Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (Ссли Π½Π΅ использован Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ()). ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

// Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚(Π”ΠΎΠΊ);

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Ошибка ΠΏΡ€ΠΈ записи Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°: " + ОписаниСОшибки());

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ошибкС, Ρ€Π°Π·Π±Π΅ΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π° нСсколько Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ?

Ошибки Π² COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Excel ΠΈΠ»ΠΈ Word) Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ особого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ Π² стандартный Π±Π»ΠΎΠΊ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Excel = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("Excel.Application");

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Ошибка) = Π’ΠΈΠΏ("COMΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠžΡˆΠΈΠ±ΠΊΠ°") Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("COM Ошибка: " + Ошибка.ОписаниС + "

Код: " + Ошибка.Код);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

Для Excel ΠΈ Word ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ свойство Error послС выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

Если Excel.Error <> 0 Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Ошибка Excel: " + Excel.ErrorDescription);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ошибка происходит Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ?

Π’ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… заданиях Π±Π»ΠΎΠΊ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π½ΠΎ:

  • БообщСния Ρ‡Π΅Ρ€Π΅Π· Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ() Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ
  • Ошибки Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΆΡƒΡ€Π½Π°Π» рСгистрации с ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΎΠΉ "Π€ΠΎΠ½ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅"
  • Для увСдомлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибки Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ с ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠ€ΠΎΠ½ΠΎΠ²ΠΎΠ΅Π—Π°Π΄Π°Π½ΠΈΠ΅(ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹) Экспорт

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

// Основной код задания

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Ошибка = Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ±ΠžΡˆΠΈΠ±ΠΊΠ΅();

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ–ΡƒΡ€Π½Π°Π»Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ(Ошибка.ОписаниС, Π£Ρ€ΠΎΠ²Π΅Π½ΡŒΠ–ΡƒΡ€Π½Π°Π»Π°.Ошибка,,,"ЀоновыСЗадания");

// ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€Ρƒ задания

ВСкстУвСдомлСния = "Ошибка Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ '" + ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.НазваниС + "': " + Ошибка.ОписаниС;

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΠ£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ(ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.Π˜Π½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€, ВСкстУвСдомлСния);

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹;

Как Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ?

Для тСстирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  1. Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ созданиС ошибок Ρ‡Π΅Ρ€Π΅Π· Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅("ВСстовая ошибка")
  2. ΠœΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½Π΅ΡˆΠ½ΠΈΡ… систСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ошибки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эмуляция нСдоступности Π²Π΅Π±-сСрвиса)
  3. <