down the rabbit hole - error handling examined
TRANSCRIPT
![Page 1: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/1.jpg)
Ready
![Page 2: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/2.jpg)
Ready
Please Muteyour mobile devices
![Page 3: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/3.jpg)
Ready
General Sponsors
Platinum Sponsors
Silver Sponsors
Gold Sponsors
Bronze Sponsors
Promoters
![Page 4: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/4.jpg)
Ready
Marjan Nikolovski
Father, Dev, CEO/Emit Knowledge
Down the rabbit holeError handling examined
try {
}
// Twitter: @m4rjann
// Blog: emitknowledge.com/research-labs
![Page 5: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/5.jpg)
Ready
Посветено за сопругата и синот
![Page 6: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/6.jpg)
Ready
![Page 7: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/7.jpg)
Ready
Агенда
• Теорија на грешки;
• Типови на грешки;
• Справување со грешки по тип;
• Одговорни и засегнати страни;
• Стратегии за справување со грешки;
• Покажани практики на терен;
• Справување со грешки и екстракција на податоци во бизнис логика;
• Справување со грешки и екстракција на податоци на клиентско ниво;
• Справување со грешки и екстракција на податоци во веб апликации;
• Анализа на логови;
![Page 8: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/8.jpg)
Ready
ГРЕШКА Е БИЛО КОЈ ПРЕКИН КОЈ ГО СПРЕЧУВА СИСТЕМОТ ДА ЈА ИЗВРШУВА ФУНКЦИЈАТА ЗА КОЈА
Е НАМЕНЕТ
![Page 9: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/9.jpg)
Ready
Секој сериозен систем мора да има добра стратегија на справување со грешките
Голем дел од кодот се труди да се справи со грешки и прекини во системот
Полесно е да се специфицира и напише код за тоа што треба еден систем да прави. Тежината е да се предвиди што може да тргне наопаку.
![Page 10: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/10.jpg)
Ready
Багови, проблеми кои не може да ги предвидиме и контролираме. Пр: Stackoverflow, Nullpointer...
Типови на грешки
using System;
class Program{
static void Main(){
User appUser = DomainServices.User.GetByUsername(@“marjann”);Console.WriteLine(appUser.Email);
}}
![Page 11: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/11.jpg)
Ready
Грешки настанати од несоодветен внес на податоци.Пр: Во поле за целоброен тип, корисникот внесува карактери...
Типови на грешки
using System;
class Program{
static void Main(){
var userIdInput = Console.ReadLine();int id = int.Parse(userIdInput);Console.WriteLine(id);
}}
![Page 12: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/12.jpg)
Ready
Инфраструктурни проблеми.Пр: Забрана за читање на податоци на диск, полн диск, податочниот сервер не е достапен...
Типови на грешки
using System;
class Program{
static void Main(){
var user = UserRepository.GetByUsername(@”marjann”);Console.WriteLine(user.Email);
}}
![Page 13: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/13.jpg)
Ready
Баговите се системски проблеми со кои не може да се справиме.
Со кои типови на грешки може да се справиме?
Невалиден внес на податоци е системски проблем со кој системот успешно треба да се справи.
При инфраструктурни проблеми, системот треба да е спремен да ги извести задолжените и одговорни страни за истиот.
![Page 14: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/14.jpg)
Ready
Корисниците на системот.
Одговорни и засегнати страни
Системските администратори.
Софтверските инженери.
![Page 15: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/15.jpg)
Ready
Софтверските инженери.
Кој е одговорен за справување со грешките?
![Page 16: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/16.jpg)
Ready
Глобална – на ниво на систем.
Стратегии за справување со грешки
Локално-контекстуална – на ниво на процес/метод/акција.
![Page 17: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/17.jpg)
Ready
КЛИЕНТ/КОРИСНИЧКИ ИНТЕРФЕЈС
БИЗНИС ЛОГИКА
ПОДАТОЧНО РЕПОЗИТОРИ
АПИ СЕРВИСИ
ЕКСТЕРНИ СЕРВИСИ
СПРАВУВАЊЕ СО ГРЕШКИ
![Page 18: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/18.jpg)
Ready
Глобална перспектива на системот.
Глобална стратегија
Централизирано справување со грешки.
Сакаме детален опис наместо завиткана грешка!
Сакаме детали за извршувањето!
Сакаме унифицирани пораки!
![Page 19: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/19.jpg)
Ready
Повеќе-нивоовска апстракција се коси со глобалната стратегија.
Глобална стратегија
Интерно, системот не треба да ги сокрива грешките.Пр: User.IsExistingUsername(“marjann”) -> DbConnetionException != false
Надворешно, системот треба да е транспарентен и унифициран во информирање при настанување на грешка.Пр: Invalid username, Username is not valid!?
![Page 20: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/20.jpg)
Ready
Локалниот контекст стапува на сцена.
Што правиме доколку акцијата може да се повтори (retry)?
Локалниот контекст е исклучок, а не правило!
Не можеме да се справиме со повеќето грешки. Целта е да го држиме системот жив.
Чесен исклучок на правилото: If it does not work fake it!Пр: Немаме пристап до база, корисниот сака да се регистрира со корисничко име, враќаме резултат дека корисничкото име е зафатено.
![Page 21: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/21.jpg)
Ready
Демо
![Page 22: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/22.jpg)
Ready
Унификација на грешки, кодови и групи.
Справување со грешки и екстракција на податоци во бизнис логика;
Информации за грешка(Error Info) наспроти Грешка(Exception).
Збогатување на грешката со информации и логирање.
![Page 23: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/23.jpg)
Ready
Демо
![Page 24: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/24.jpg)
Ready
Пренос на доволна информација.
Справување со грешки и екстракција на податоци во веб апликации;
Дефинирање на страници за грешки.
![Page 25: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/25.jpg)
Ready
Демо
![Page 26: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/26.jpg)
Ready
Локализација на грешки.
Справување со грешки и екстракција на податоци на клиентско ниво;
Пренесување на информација за грешка до корисникот.
![Page 27: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/27.jpg)
Ready
Демо
![Page 28: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/28.jpg)
Ready
Кој, Што, Како, Каде, Кога?
Анализа на логови
ПРОМ – алатка за процесно рударење.
Одговор на прашањата:- Како се користи сотфверот?- Тесно грло во извршување?- Параметри на извршување?- Шаблони на извршување?
![Page 29: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/29.jpg)
Ready
![Page 30: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/30.jpg)
Ready
catch(PPTException up){
}
Logger.Log(“ПРАШАЊА?”, up);throw up;
![Page 31: Down the rabbit hole - Error handling examined](https://reader031.vdocuments.site/reader031/viewer/2022020218/55a4131d1a28abd91a8b46ad/html5/thumbnails/31.jpg)
ReadyReady
Thank you