Autor Beitrag
Phelios
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38

Win XP, Win 7
Visual Studio 2012 Express C#
BeitragVerfasst: Sa 14.01.12 15:15 
Hallo Leute ...

Ist vielleicht ne blöde Frage.
Es geht um try und catch ...

Also ...

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
try
{
   // hier wird was gemacht
}
catch(Exception ex)
{
   Messagebox.Show("bla bla");
}


Okay, aber wo, zum Geier holt der das "ex" in der catch-Klammer her? :D
Ich kriege ständig ne Warnung, weil eine Variable deklariert wurde,
aber nie benutzt wird.

Ich hab das aber schon in vielen Quelltexten gesehen.
Wäre schön, wenn mich da mal jemand aufklären würde, dass ich auch
in diesem Punkt den Durchblick habe.
Vielleicht mache ich auch etwas falsch, oder habe was übersehen.

Danke im Voraus für Eure Antworten.


Moderiert von user profile iconTh69: Topic aus WinForms verschoben am Sa 14.01.2012 um 14:32

_________________
Greeting
( Karl )
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 14.01.12 15:36 
Hallo Phelios,

entweder den Variablennamen weglassen oder aber natürlich noch besser die Exception auch ausgeben, z.B. mittels
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
try
{
   // hier wird was gemacht
}
catch(Exception ex)
{
   Messagebox.Show(ex); // bzw. ex.Message
}

Ich weiß jetzt aber nicht, was genau du mit
Phelios hat folgendes geschrieben:
Okay, aber wo, zum Geier holt der das "ex" in der catch-Klammer her?
meinst?
Den Variablennamen darfst du frei bestimmen, es hat sich halt nur 'ex' eingebürgert.
Phelios Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38

Win XP, Win 7
Visual Studio 2012 Express C#
BeitragVerfasst: Sa 14.01.12 16:06 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo Phelios,


Hallöchen.

Th69 hat folgendes geschrieben:
Ich weiß jetzt aber nicht, was genau du mit
Phelios hat folgendes geschrieben:
Okay, aber wo, zum Geier holt der das "ex" in der catch-Klammer her?
meinst?
Den Variablennamen darfst du frei bestimmen, es hat sich halt nur 'ex' eingebürgert.


Ja, das ist mir schon klar, aber diese Variable muss doch einen Sinn haben,
sonst würde mich C# noch nicht mit einer Warung nerven.

Es ist sicher kein gravierender Fehler, aber irgendetwas mache ich falsch.
Ich meine, irgendetwas muss doch mit "ex" gemacht werden.

Oder sehe ich das falsch??? :?:

_________________
Greeting
( Karl )
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 14.01.12 16:21 
Zitat:
Oder sehe ich das falsch???


Nein das siehst du eigentlich richtig. Ex solltest du eigentlich genauer auswerten. Entweder in dem du einen genaueren Typ als Exception bei catch angibst oder dir andere Details der Exception ansiehst und daraus ableitest was denn genaue zu tun ist. Irgendwas anzeigen und dann einfach das Programm weiterlaufen lassen ist fast immer falsch!

Nur wenn du genau weißt das Exceptions in einem Codeblock egal sind kannst du Ex weglassen (und einfach catch(Exception) ohne Ex schreiben).

Zitat:
sonst würde mich C# noch nicht mit einer Warung nerven.


Der Compiler warnt dich immer wenn du ein Variable definierst aber dann nicht benutzt. Die Exception des catch Blocks macht da keine Ausnahme. Ist ja auch verständlich das der Compiler das für verdächtig hält das der Programmierer vor dem Bildschirm was definiert aber dann ignoriert.
Phelios Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38

Win XP, Win 7
Visual Studio 2012 Express C#
BeitragVerfasst: Sa 14.01.12 19:25 
Hallo nochmal ...

Also ich hab mal so ein bisschen rum gespielt.
Auf die Idee muss man erst mal kommen, dass man einfach eine Variable
deklarieren kann, sie zwischen 2 Klammern packen, und dann wird sie
benutzt, denn das ist doch hier keine Parameter-Übergabe.

Ich bin dahinter gekommen, nachdem ich in einen von meinen C# -Büchern
nachgeschlagen habe, denn ich habe so etwas vorher gar nicht gefunden

Ich hab also folgendes gemacht :

ausblenden C#-Quelltext
1:
2:
3:
4:
catch(Exception ex)
{
  MessageBox.Show("Es ist ein Fehler aufgetreten \n" + ex.Message);
}


... Und die Warnung ist verschwunden.
Ich vermute, das "ex" ist ein Index auf Fehlermeldungen, die wahrscheinlich
auf ein String Array zurückzuführen ist.

Ich werde jetzt mal bewusst einige unterschiedliche Exceptions auslösen, und mal sehn,
was die MessageBox zu sagen hat.

Aber egal, das Problem ist gelöst, aber es hat sich wohl gelohnt, dass ich hier
mit jemanden geredet habe, sonst hätte ich es wahrscheinlich nicht gefunden.

ICH DANKE DIR

_________________
Greeting
( Karl )
daeve
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 116
Erhaltene Danke: 3

Windows (XP Pro, 7 Ultimate x64)
C#,WPF,Java,ASP.Net, VS 2010 Ultimate (x86)
BeitragVerfasst: So 15.01.12 20:46 
Also das was du meinst ist glaube ich einfach wie und was in das ex. kommt ?

Das ist nichts anderes als die "genaue" Ausnahmemeldung, je nach Ausnahme halt eine andere und die wird generiert sobald eine Ausnahme im try block auftritt.
lothi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 114
Erhaltene Danke: 3



BeitragVerfasst: Sa 21.01.12 13:00 
user profile iconPhelios hat folgendes geschrieben Zum zitierten Posting springen:
Hallo nochmal ...


... Und die Warnung ist verschwunden.
Ich vermute, das "ex" ist ein Index auf Fehlermeldungen, die wahrscheinlich
auf ein String Array zurückzuführen ist.

Ich werde jetzt mal bewusst einige unterschiedliche Exceptions auslösen, und mal sehn,
was die MessageBox zu sagen hat.

Aber egal, das Problem ist gelöst, aber es hat sich wohl gelohnt, dass ich hier
mit jemanden geredet habe, sonst hätte ich es wahrscheinlich nicht gefunden.

ICH DANKE DIR


Hallo

1. Die Warnung hat nichts mit der Exception zu tun. Die Meldung kommt weil der Compiler Schalter /warn:4 eingestellt ist. Du kannst das Projekt kompilieren aber es wird dich darauf aufmerksam gemacht, dass du eine Variable zwar deklariert, aber nicht benutzt hast.
Diese Warnung kommt in jeder Methode. Die IDE-VS zeigt dir das einfach direkt an. Wenn du das Projekt über die csc.exe erstellst, bekommst du die Meldung erst beim Erstellen deines Projektes. Du kannst die Warnstufe (/warnaserror) noch höher einstellen, so dass du auch bei Warnungen dein Projekt nicht kompilieren kannst.

2. Exception ist eine Klasse und hat niggs mit einem String Array oder mit Zauberei oder Wahrscheinlichkeiten zu tun:
msdn.microsoft.com/d...ystem.exception.aspx

3. Es ist nicht egal wenn man das Vorgehen beim Error-Handling nicht versteht. Es ist sehr wichtig bei einer Softwareentwicklung das Error-Handling korrekt zu implementieren. In den Büchern und Tutorials, wird das aus Platzgründen meisten wegelassen, aber in einem Projekt muss darf man das nicht einfach so weglassen.

Gruss Lothi