Alle Varianten sind sehr unschön. Meiner Meinung nach sollte, wenn eine Exception wie oben gezeigt, unbehandelt ist, gar nicht erst gefeuert werden. Das heißt, dass diese Exception schon in der "irgendwas"-Methode behandelt /verhindert werden sollte.
Und wenn die irgendwas Methode zur Business oder Data Layer gehört? Dann muss sie an das UI weitergereicht werden. Aber besonders da sollte man auch nicht mit einem generellem catch arbeiten.
Ist aber ein Unterschied: Mit catch (exception) { } bezieht sich das catch ausschließlich auf .NET Exceptions. C# übersetzt ein leeres catch in catch (System.Object).
Die Klammer nach dem catch würde ich nicht empfehlen, wegzulassen. Man sollte beim catchen generell versuchen, den Typen so genau wie möglich anzugeben. Sonst läuft man Gefahr, dass man diese Blöcke zu nachlässig behandelt.