Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Novi predlog resenja problema : exceptions

[es] :: C/C++ programiranje :: Novi predlog resenja problema : exceptions

[ Pregleda: 591 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Branimir Maksimovic

Član broj: 64947
Poruke: 2114
178.250.138.*



+489 Profil

icon Novi predlog resenja problema : exceptions14.05.2018. u 05:19 - pre 10 meseci
http://www.open-std.org/jtc1/s...1/docs/papers/2018/p0709r0.pdf

Ako procitate prethodno shvaticete da je sve ovo jednostavno resiti onako kako je to uradjeno u Rustu: uvodjenjem tagged unija.
Uz std::variant, std::optional te sad i ovoga, citava ova gimnastika postaje nepotrebna samo ako bi iskopriali malo od Rust-a ;)





press any key to continue or any other to quit....
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 825
*.prolocation.net.



+132 Profil

icon Re: Novi predlog resenja problema : exceptions16.05.2018. u 12:45 - pre 10 meseci
Procitao sam tek prvih par stranica i vec tu se spominje da su u nekim slucajevima izuzeci neophodni (npr. kao mehanizam prijave greske u konstruktoru).

Tu ne pomaze ni std::optional. Alternativa je naravno da svaki objekat drzi interno stanje koje govori da li je validan ili ne, ali to mi nekako narusava invarijantnost. Moje razumijevanje je da konstruktor treba ili da uspije i pritom uspostavi invarijantu (objekat), ili da baci izuzetak ako invarijanta ne moze da se uspostavi. Na taj nacin je koristenje objekta sigurno, npr. korisnik ne moze slucajno da zaboravi da provjeri da li je objekat validan.

Ne znam kako funkcionisu tagged unije u Rustu, ali pretpostavljam da imaju isti problem?

U svakom slucaju, fokus na rjesavanje ovog problema je i vise nego dobrodosao.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 2114
178.250.138.*



+489 Profil

icon Re: Novi predlog resenja problema : exceptions16.05.2018. u 13:20 - pre 10 meseci
Pazi u slucaju da se ovo implementira kako je opisano konstruktor bi vracao ili gresku ili objekat. Rust nema konstruktore pa nema ni problema ali svaka
konstruktor f-ja moze da vraca recimo Result<T,E>. Sa time sto bi po Herb-ovom predlogu to bilo sakriveno u throw i catch. E sad kazem u C++ je to malo clumsy
sa obzirom da imamo i std::variant i std::optional, pa sad i ovo ispod haube. Ako si procitao videces da je glavna zamerka exception-ima nedeterminizam i to
sto objekti moraju da idu na heap te code/space bloat sto nosi sam mehanizam implementacije. E sad malo je kasno ovo da se popravlja nakon svih ovih
godina i da se prizna: error handling nije bas najbolje uradjen ;)
Jezici kao sto su C# i Java nemaju sa time problema posto njima performanse i 'low cost' nisu na prvom mestu, ali jeziku kao sto je C++ itekako smeta ;)
press any key to continue or any other to quit....
 
Odgovor na temu

[es] :: C/C++ programiranje :: Novi predlog resenja problema : exceptions

[ Pregleda: 591 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.