Forum I Roku Informatyki UW

Zadanie 5

Go down

Zadanie 5

Post by Gricha on Sat Dec 10, 2011 6:36 pm

Czy set przy insercie może rzucić exception?
http://publib.boulder.ibm.com/infocenter/comphelp/v9v111/index.jsp?topic=/com.ibm.xlcpp9.aix.doc/standlib/stl_map.htm

Jak tu pogrzebałem to wynikało, że tak, ale pewny i tak nie jestem Razz
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 5

Post by SiwyEd on Sat Dec 10, 2011 8:17 pm

Tak, może mu:
a) zbraknąć pamięci
b) operator< elmentów w secie może rzucić wyjątkiem
c) i pewnie miliard innych

SiwyEd

Liczba postów : 5
Join date : 2011-04-16

View user profile

Back to top Go down

Re: Zadanie 5

Post by Gricha on Sat Dec 10, 2011 10:30 pm

Not cool.
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 5

Post by kroolik on Mon Dec 12, 2011 7:27 pm

Czy załozyliście, że Rev.get_id() nie rzuca wyjątków?

kroolik

Liczba postów : 55
Join date : 2010-12-06

View user profile

Back to top Go down

Re: Zadanie 5

Post by Gricha on Mon Dec 12, 2011 9:35 pm

Tak Razz
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 5

Post by magdov on Mon Dec 12, 2011 10:57 pm

Ma ktoś jakieś fajne testy? Nasz ćwiczeniowiec mówił, że testy mają być złośliwe, więc warto dobrze potestować programy Wink

magdov

Liczba postów : 37
Join date : 2010-10-12
Age : 27

View user profile

Back to top Go down

Re: Zadanie 5

Post by Heniek on Wed Dec 14, 2011 5:29 pm

Code:
 typename Node::SetChildren::iterator itChildren = children.begin();
  while (itChildren != children.end()) {
    (*itChildren)->parents.erase(WeakPointer(sPtr));
    itChildren++;
  }

Czy ktoś mógłby mi powiedzieć, czy istnieje jakaś możliwość wystąpienia wyjątku w tym fragmencie kodu. Sprawdziłem, że erase() z STLa jest nothrow, a konstruktor template weak_ptr(shared_ptr const & r); ma informacje że nie rzuca wyjątku.

Heniek

Liczba postów : 329
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 5

Post by saephir on Thu Dec 15, 2011 5:25 pm

Wydaje mi się, że nie należy wpadać w przesadną panikę.
Dobrze napisany kod nie wyrzuci wyjątku "z naturalnych przyczyn" jeśli będziemy sprawdzać czy rewizje, do których się odwołujemy po prostu istnieją.

Sprawdzanie czegoś takiego:
a) zbraknąć pamięci
b) operator< elmentów w secie może rzucić wyjątkiem
c) i pewnie miliard innych
to już by było ostre przegięcie. Jedyna dyskusyjna sprawa to b), ale jeśli porównywanie elementów rzuca wyjątek, to znaczy że któryś z obiektów jest w "inconsistent state", więc wyjątek powinien być wyrzucony wcześniej, co oznacza, że kod, który używa naszej biblioteki, jest źle napisany.

Natomiast Rev.get_id() to jest sprawa podejrzana, ja bym o tym nic nie zakładał, a można łatwo się wybronić przed wyjątkiem w tym miejscu.
avatar
saephir

Liczba postów : 84
Join date : 2010-10-20

View user profile

Back to top Go down

Re: Zadanie 5

Post by Heniek on Thu Dec 15, 2011 7:52 pm

Ten kod przeszukuje wskaźniki, które mają operator porównania nothrow, wiec moim zdaniem nie może być wyjątku

Heniek

Liczba postów : 329
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 5

Post by Sponsored content


Sponsored content


Back to top Go down

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum