Da presecem ja ovde, @everybody.
a) try/catch ne kosta nista dok ne dodje do exception-a. A kad dodje do exception-a, ili ces ga ti uhvatiti ili ce prvi raspolozivi catch u stek-u, u oba slucaja kostace otrilike isto. Sama cena try-a i cleanup-a kad se ne desi exception je neznatna.
b) U ovom slucaju nije sve predvidivo, probaj da kroz ove rutine propustis fajl od 0 bajta pa da vidis kako prsti ArgumentOutOfRangeException na s.Position -= 1;
c) Prica o tome kako su exception-i zli je tacna, ali se to ne odnosi na koriscenje try/catch vec se odnosi na preporuku da ne bacas svoje exception-e za svaku glupost i kad god je moguce ne koristis exception kao metod komunikacije sa pozivnom metodom (sto nije uvek moguce i treba koristiti exception-e, naoricto ako ce neoko drugi da poziva tvoje metode).
c1) Ono sto treba da se radi u try/catch a niko ne radi je da se ne hvata genericki Exception vec specificni exception koji umes da procesiras, ostale treba pustiti da prodju. Najveca greska koju programeri prave je da ne zele da pisu sto linija koda i onda nespretno 'progutaju' neki ozbiljan exception koji je mogao da se resi negde 'uzvodno' ili je namenski trebalo da obori ceo proces. Ili naprave metod koji vraca true/false kao indikator uspeha i onda progutaju genericki exception i vrate false kroz catch, pa se ti posle cesi zasto si dobio false..
d) Da, File.OpenRead mora u try
e) ovo je zaista dobro mesto za using, samo imaj u vidu da je using nista drugo nego kontrola kreiranje/unistavanja objekta kroz try/finally strukturu, ako je cilj izbeci try onda using nije resenje.
e) Kod ima bug, bafer se ne cisti i ako fajl ima neparnu velicinu i zavrsava sekvencom XX FX FF gde je X random, naci ce match (FF ce prebrisati FX a FF ce ostati i dobices FF FF u bloku i imaces lazan match)
f) generalno, ovakav nacin pretrazivanja fajlova je neoptimizovan

. Svaki bajt se ucitava 2 puta i za fajl od X bajtova pravi se [X/2]*2 poziva u I/O (sto kosta mnogo mnogo vise od try/catch sa sve preemptive reading i kesiranjem od strane OSa). Gledaj da falove ucitavas u vecim blokovima (npr 32k) i da onda pretrazujes unutar bloka
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić