Gameprogrammeren: Exceptions Arjan Egges Paul Bergervoet Wouter van Toll
Game development Van prototype naar commercieel product Meer levels, uitgebreider game ontwerp Professioneel ontworpen assets Goed opgezette programmacode Hoge mate van robuustheid
Robuustheid Goed ontwerp van je code is cruciaal Duidelijke afspraken voor gedrag van methoden/klassen Zoveel mogelijk bugs verwijderen Zoveel mogelijk verschillende gevallen/problemen ondervangen Testen, testen, testen!
Software testen Verschillende soorten tests: Handmatig Automatisch (unit tests) Verschillende niveaus van testen: Alpha test Intern Meestal alleen developers Beta test Extern Grotere groep spelers
Excepties Voorbeeld: StreamReader r = new StreamReader("test.txt"); string t = r.ReadToEnd(); // oops… the file test.txt doesn’t exist… Wat nu?
Excepties Zijn een manier om robuustheid van games te vergroten Excepties gebruik je om externe problemen op te lossen: Er mist een bestand De internetverbinding wordt verbroken Een andere speler gaat plotseling off-line …
Excepties Dit soort gevallen kun je afhandelen met exceptions (“uitzonderingen”) try { StreamReader r = new StreamReader("test.txt"); string t = r.ReadToEnd(); } catch (FileNotFoundException e) Console.WriteLine(“The file was not found”);
Excepties Meerdere catch-gedeelten voor verschillende soorten excepties try { StreamReader r = new StreamReader("test.txt"); string t = r.ReadToEnd(); } catch (FileNotFoundException e) Console.WriteLine("The file was not found"); catch (IOException e) Console.WriteLine("IOException during file read");
Excepties Exceptie-klassen zijn georganiseerd in een hierarchie Bovenaan die hierarchie: de Exception-klasse Dus de volgende catch handelt alle mogelijke excepties af: catch (Exception e) { Console.WriteLine("Unknown exception occurred"); }
Excepties Je kunt zelf ook een exceptie “werpen”: private Tile LoadTile(char tileType, int x, int y) { switch (tileType) case '.': return new Tile(); … default: throw new IOException("Unknown tile type"); }
Vertaalt exceptie naar string Excepties En die kun je ergens anders weer afhandelen try { char c = textlines[i][j]; tiles[i,j] = LoadTile(c, i, j); } catch (IOException e) Console.WriteLine("Exception: " + e.ToString()); Vertaalt exceptie naar string