Huhu,
bitte nicht an ArrayList gewöhnen. Nimm lieber List<> statt dessen.
Das Problem an der Sache ist, dass du in ArrayList über boxing und
unboxing (bitte nachlesen) alles drin speichern kannst. Damit umgehst du
das Typsystem und selbst MS emfpiehlt das nicht mehr.
https://docs.microsoft.com/de-de/dotnet/api/system.collections.arraylist?view=net-5.0
Was mit noch wichtig ist, ist dein Exceptionhandling.
mach das nicht. zum einen willst du immer die gleiche Exception fangen.
Da kannst du dir die mehrfachen try/catch geschichten auch sparen und
nur einen machen.
Wenn man mehrere try/catch in einer Funktion/Methode braucht, ist sie
sowieso zu lang und macht zu viele Sachen auf einmal.
Dazu kommt noch, dass du mit dem Message String prüfst, welche Exception
du hast. Lass das lieber sein. Du kannst auch deine gesuchte Exception
direkt fangen und danach die nächste (oder auch nicht)
1 | void foo(){
|
2 | try{
|
3 | int x = 5/0;
|
4 | }
|
5 | catch(DivideByZeroException excp){
|
6 | Console.WriteLine("irgend ein depp hat durch 0 dividiert");
|
7 | throw;
|
8 | }
|
9 | catch(Exception excp){
|
10 | Console.WriteLine("etwas anderes schlimmes ist passiert");
|
11 | throw;
|
12 | }
|
13 | }
|
Der code oben fängt die Exception ab, die durch die Division entsteht
und wenn noch eine andere Exception auftritt, wird die im zweiten catch
gefangen. Das kannst du beliebig Erweitern, also beliebig viele
unterschiedliche Exceptions mit catch einfangen.