Laden...

Mehrere Exceptions catchen in einer Abrfrage ...

Erstellt von mosspower vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.596 Views
mosspower Themenstarter:in
456 Beiträge seit 2007
vor 15 Jahren
Mehrere Exceptions catchen in einer Abrfrage ...

Hallo "Kollegen",

gibt es für folgendes Konstrukt eine Vereinfachung?


catch(IOException) {
        // Ignore this one, this will be handled
        // by all other dispatch programs, we don't
        // need tons of emails here
      }
      catch(SqlException) {
        // Ignore this one, this will be handled
        // by all other dispatch programs, we don't
        // need tons of emails here
      }
      catch {
        this.notHandledErrroCounter++;
        throw;
      }

.. ich dachte an sowas ...

... catch(IOException, SqlException, BlaException) { ...

Danke schon mal für etwaige Antworten im Voraus.

C
92 Beiträge seit 2008
vor 15 Jahren

Ich bin mir nicht ganz sicher, ob dass das ist was du meinst, aber probier es doch einfach nur mit:

catch (Exception)
{
...
}

Das gilt dann für alle Exceptions, die du nicht schon vorher abgefangen hast

mosspower Themenstarter:in
456 Beiträge seit 2007
vor 15 Jahren

Ja, OK, das könnte ich machen und dann abfragen ...

if(ex is SqlException || ex is IOException) ...

,

genau, so kann man das auch machen, ich dachte nur, dass es mit diesem Konstrukt möglich wäre, trotzdem Danke, bin erst nach Deinem Post auf die Idee gekommen.

888 Beiträge seit 2007
vor 15 Jahren
catch(Exception)

...dann fängst Du alle ab!

mosspower Themenstarter:in
456 Beiträge seit 2007
vor 15 Jahren
catch(Exception)  

...dann fängst Du alle ab!

Ja, das weiß ich, das geht auch mit nur catch { ..., jedoch wollte ich abhängig von mehren Exceptions eine gleiche (oder ungleiche) Behandlung durchführen ... das scheint nicht in einem Catch-Kostrukt zu gehen, hier muss ich halt global catch(Exception ex) machen und dann mit is abfragen, was für ein Typ die Exception ist.

3.971 Beiträge seit 2006
vor 15 Jahren

Unbedingt aber einen else-Zweig einbauen und die Exception, die du nicht behandeln kannst weiterwerfen.


catch (Exception ex) {
  if (ex is SqlException || ex is IOException) {
    ...
  }
  else {
    throw;
  }
}

Wichtig, nicht throw ex;. Dies wirft die Exception erneut und verschleiert so den StackTrace!

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

C
92 Beiträge seit 2008
vor 15 Jahren

@kleines_eichhoernchen:

gut zu wissen 😉 (also das mit dem throw ohne ex)