+ All Categories
Home > Software > Down the rabbit hole - Error handling examined

Down the rabbit hole - Error handling examined

Date post: 14-Jul-2015
Category:
Upload: marjan-nikolovski
View: 1,083 times
Download: 3 times
Share this document with a friend
31
Ready
Transcript
Page 1: Down the rabbit hole - Error handling examined

Ready

Page 2: Down the rabbit hole - Error handling examined

Ready

Please Muteyour mobile devices

Page 3: Down the rabbit hole - Error handling examined

Ready

General Sponsors

Platinum Sponsors

Silver Sponsors

Gold Sponsors

Bronze Sponsors

Promoters

Page 4: Down the rabbit hole - Error handling examined

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

Ready

Посветено за сопругата и синот

Page 6: Down the rabbit hole - Error handling examined

Ready

Page 7: Down the rabbit hole - Error handling examined

Ready

Агенда

• Теорија на грешки;

• Типови на грешки;

• Справување со грешки по тип;

• Одговорни и засегнати страни;

• Стратегии за справување со грешки;

• Покажани практики на терен;

• Справување со грешки и екстракција на податоци во бизнис логика;

• Справување со грешки и екстракција на податоци на клиентско ниво;

• Справување со грешки и екстракција на податоци во веб апликации;

• Анализа на логови;

Page 8: Down the rabbit hole - Error handling examined

Ready

ГРЕШКА Е БИЛО КОЈ ПРЕКИН КОЈ ГО СПРЕЧУВА СИСТЕМОТ ДА ЈА ИЗВРШУВА ФУНКЦИЈАТА ЗА КОЈА

Е НАМЕНЕТ

Page 9: Down the rabbit hole - Error handling examined

Ready

Секој сериозен систем мора да има добра стратегија на справување со грешките

Голем дел од кодот се труди да се справи со грешки и прекини во системот

Полесно е да се специфицира и напише код за тоа што треба еден систем да прави. Тежината е да се предвиди што може да тргне наопаку.

Page 10: Down the rabbit hole - Error handling examined

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

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

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

Ready

Баговите се системски проблеми со кои не може да се справиме.

Со кои типови на грешки може да се справиме?

Невалиден внес на податоци е системски проблем со кој системот успешно треба да се справи.

При инфраструктурни проблеми, системот треба да е спремен да ги извести задолжените и одговорни страни за истиот.

Page 14: Down the rabbit hole - Error handling examined

Ready

Корисниците на системот.

Одговорни и засегнати страни

Системските администратори.

Софтверските инженери.

Page 15: Down the rabbit hole - Error handling examined

Ready

Софтверските инженери.

Кој е одговорен за справување со грешките?

Page 16: Down the rabbit hole - Error handling examined

Ready

Глобална – на ниво на систем.

Стратегии за справување со грешки

Локално-контекстуална – на ниво на процес/метод/акција.

Page 17: Down the rabbit hole - Error handling examined

Ready

КЛИЕНТ/КОРИСНИЧКИ ИНТЕРФЕЈС

БИЗНИС ЛОГИКА

ПОДАТОЧНО РЕПОЗИТОРИ

АПИ СЕРВИСИ

ЕКСТЕРНИ СЕРВИСИ

СПРАВУВАЊЕ СО ГРЕШКИ

Page 18: Down the rabbit hole - Error handling examined

Ready

Глобална перспектива на системот.

Глобална стратегија

Централизирано справување со грешки.

Сакаме детален опис наместо завиткана грешка!

Сакаме детали за извршувањето!

Сакаме унифицирани пораки!

Page 19: Down the rabbit hole - Error handling examined

Ready

Повеќе-нивоовска апстракција се коси со глобалната стратегија.

Глобална стратегија

Интерно, системот не треба да ги сокрива грешките.Пр: User.IsExistingUsername(“marjann”) -> DbConnetionException != false

Надворешно, системот треба да е транспарентен и унифициран во информирање при настанување на грешка.Пр: Invalid username, Username is not valid!?

Page 20: Down the rabbit hole - Error handling examined

Ready

Локалниот контекст стапува на сцена.

Што правиме доколку акцијата може да се повтори (retry)?

Локалниот контекст е исклучок, а не правило!

Не можеме да се справиме со повеќето грешки. Целта е да го држиме системот жив.

Чесен исклучок на правилото: If it does not work fake it!Пр: Немаме пристап до база, корисниот сака да се регистрира со корисничко име, враќаме резултат дека корисничкото име е зафатено.

Page 21: Down the rabbit hole - Error handling examined

Ready

Демо

Page 22: Down the rabbit hole - Error handling examined

Ready

Унификација на грешки, кодови и групи.

Справување со грешки и екстракција на податоци во бизнис логика;

Информации за грешка(Error Info) наспроти Грешка(Exception).

Збогатување на грешката со информации и логирање.

Page 23: Down the rabbit hole - Error handling examined

Ready

Демо

Page 24: Down the rabbit hole - Error handling examined

Ready

Пренос на доволна информација.

Справување со грешки и екстракција на податоци во веб апликации;

Дефинирање на страници за грешки.

Page 25: Down the rabbit hole - Error handling examined

Ready

Демо

Page 26: Down the rabbit hole - Error handling examined

Ready

Локализација на грешки.

Справување со грешки и екстракција на податоци на клиентско ниво;

Пренесување на информација за грешка до корисникот.

Page 27: Down the rabbit hole - Error handling examined

Ready

Демо

Page 28: Down the rabbit hole - Error handling examined

Ready

Кој, Што, Како, Каде, Кога?

Анализа на логови

ПРОМ – алатка за процесно рударење.

Одговор на прашањата:- Како се користи сотфверот?- Тесно грло во извршување?- Параметри на извршување?- Шаблони на извршување?

Page 29: Down the rabbit hole - Error handling examined

Ready

Page 30: Down the rabbit hole - Error handling examined

Ready

catch(PPTException up){

}

Logger.Log(“ПРАШАЊА?”, up);throw up;

Page 31: Down the rabbit hole - Error handling examined

ReadyReady

Thank you


Recommended