| Die Problemzone Spinnt der Rechner mal wieder? Stellt eure Fragen hier und es wird geholfen. |
Diskussion: try und catch im Forum Die Problemzone, in der Kategorie PC Foren; Anzeige hi bin ein ziemlicher Anfänger in Sachen programmieren und ich soll für meine Arbeit ein Prog schreiben wobei ich ...
![]() |
| | #1 (permalink) |
| Registriert seit: 09.09.08 ![]() Likes: 0 | Anzeige hi bin ein ziemlicher Anfänger in Sachen programmieren und ich soll für meine Arbeit ein Prog schreiben wobei ich die try und catch attribute benötige. In galileo open book c# benutzen sie dabei die variable "e" aber bei mir geht das nicht. Kann mir da vielleicht jemand helfen?? hier mein bisheriges Ergebnis: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { double p1x, p2x, p1y, p2y, m, b; string stm, stb; p1x = Convert.ToDouble(textBox1.Text); p1y = Convert.ToDouble(textBox2.Text); p2x = Convert.ToDouble(textBox3.Text); p2y = Convert.ToDouble(textBox4.Text); m = p2y - p1y / p2x - p1x; b = p2y - m * p2x; stm = Convert.ToString(m); stb = Convert.ToString(b); //hier auf Ausnahmen achten try { p1x = p2x; } //Ausnahmen die im try Block autreten werden hierher übermittelt catch(Exception ) { MessageBox.Show("x1 darf nicht gleich x2 sein", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Warning); } textBox5.Text = string.Format("f(x)=" + stm + "*x" + stb); } } } danke schonmal im vorraus Mit freundlichen Grüßen Schnauf |
| | |
| | #2 (permalink) |
| Bitte benutz das nächste mal Code-Tags, so hier: Code: using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
double p1x, p2x, p1y, p2y, m, b;
string stm, stb;
p1x = Convert.ToDouble(textBox1.Text);
p1y = Convert.ToDouble(textBox2.Text);
p2x = Convert.ToDouble(textBox3.Text);
p2y = Convert.ToDouble(textBox4.Text);
m = p2y - p1y / p2x - p1x;
b = p2y - m * p2x;
stm = Convert.ToString(m);
stb = Convert.ToString(b);
//hier auf Ausnahmen achten
try
{
p1x = p2x;
}
//Ausnahmen die im try Block autreten werden hierher übermittelt
catch(Exception )
{
MessageBox.Show("x1 darf nicht gleich x2 sein", "Achtung",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
textBox5.Text = string.Format("f(x)=" + stm + "*x" + stb);
}
}
} Bei einem einfachen Vergleich (p1x = p2x Für diesen einfachen Vergleich brauchst du diese nicht, da würde ich es so machen: Code: if(p1x == p2x)
{
MessageBox.Show("x1 darf nicht gleich x2 sein", "Achtung",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
} | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) | |
| Boardfotograf Registriert seit: 21.12.07 ![]() Likes: 63 | M4CH!N3 hat recht. Dabei wird keine Exception geworfen. Zitat:
Code: catch(Exception e)
{
MessageBox.Show("Fehler " + e.Message,
"Achtung",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
} | |
| | |
| | #4 (permalink) |
| Moderator ![]() Registriert seit: 19.06.06 ![]() ![]() ![]() Likes: 51 | Ich schließe mich hier mal meinen Vorrednern an. Wenn du unbedingt try catch in deinem Beispiel verwenden willst dann pack die Zeile m = p2y - p1y / p2x - p1x; in den Block, also etwa so: Code: ...
p1x = Convert.ToDouble(textBox1.Text);
p1y = Convert.ToDouble(textBox2.Text);
p2x = Convert.ToDouble(textBox3.Text);
p2y = Convert.ToDouble(textBox4.Text);
try{ // Division durch 0 abfangen
m = p2y - p1y / p2x - p1x;
}
catch(Exception e)
{
MessageBox.Show("Fehler " + e.Message,
"Achtung",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
b = p2y - m * p2x;
stm = Convert.ToString(m);
stb = Convert.ToString(b);
... |
| | |
| | #5 (permalink) |
| Senior Member Registriert seit: 07.01.03 ![]() Likes: 19 | Ich wollt eigentlich net klugscheißern, aber nachdem schon 2 Leute den Fehler machen: Spezielle Exceptions verwenden, in dem Fall die DivideByZeroException. |
| | |
| | #6 (permalink) |
| Themenstarter Registriert seit: 09.09.08 ![]() Likes: 0 | @ M4CH!N3 kannst du mir dann vlt auch noch einen "else" code dafür geben?? das programm dient einer geradengleichung und wenn x1 =x2 ist darf kein Ergebnis herrauskommen |
| | |
| | #7 (permalink) | |
| Moderator ![]() Registriert seit: 19.06.06 ![]() ![]() ![]() Likes: 51 | Zitat:
| |
| | |
| | #8 (permalink) |
| Themenstarter Registriert seit: 09.09.08 ![]() Likes: 0 | ja sie hätte funktioniert aber war für mich in dem sinne nicht relevant M4CH!N3´s Lösung war die die ich gebraucht habe EDIT: hat sich erledigt habs rausgefunden. Ich stells mal rein Code: using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{ public Form1()
{ InitializeComponent();
} private void button1_Click(object sender, EventArgs e) {
try
{
double p1x, p2x, p1y, p2y, m, b;
string stm, stb;
p1x = Convert.ToDouble(textBox1.Text);
p1y = Convert.ToDouble(textBox2.Text);
p2x = Convert.ToDouble(textBox3.Text);
p2y = Convert.ToDouble(textBox4.Text);
if (p1x == p2x)
{
MessageBox.Show("x1 darf nicht gleich x2 sein", Achtung", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
m = p2y - p1y / p2x - p1x;
b = p2y - m * p2x;
stm = Convert.ToString(m);
stb = Convert.ToString(b);
textBox5.Text = string.Format("f(x)=" + stm + "*x" + stb);
}
}
catch
{
MessageBox.Show("Kovertierungfehler", "Achtung", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
} danke nochmal an alle die mir helfen wollten und geholfen haben |
| | |
| | #9 (permalink) |
| Boardfotograf Registriert seit: 21.12.07 ![]() Likes: 63 | So richtig schön ist das aber nicht, wenn Du mit try-catch ohne Exception arbeitest. Theoretisch kann der Spring in den catch-Block verschiedene Ursachen haben, und die kriegst Du über die Exception raus. Im Moment gibst Du pauschal die Meldung "Kovertierungfehler" aus, egal welche Ursache der Fehler hatte. Angenommen der Fehler entsteht nicht beim Konvertieren, sondern z.B. beim Auslesen der Textboxen. Du wirst trotzdem die Meldung "Kovertierungfehler" bekommen. Verwirrend für den Anwender. |
| | |
| | #10 (permalink) |
| Registriert seit: 16.05.08 ![]() Likes: 0 | Hi, Sry für die OT, aber ich habe eine kleine Frage die mich schon ewigst beschäftigt. Warum werden des öfteren mehrere derived Exceptions implementiert um diverse Fehler abzufangen, anstatt einfach die Baseclass Exception zu verwenden? Des öfteren macht es für mich durchaus Sinn. Zb wenn man eine outofrange Exception anders behandeln will, als eine dividebyzero Exception. Ich nehm mal ein Beispiel aus nen OpenBook her, bei welchem ich die Baseclass Exception bevorzugen würde: Code: try {
obj.GetData();
}
catch (FileNotFoundException e) {
// falls die angegebene Datei nicht existiert
Console.WriteLine(e.Message + "- Die Datei existiert nicht.");
}
catch (ArgumentException e) {
// falls der Anwender einen Leerstring übergibt
Console.WriteLine(e.Message + "- Die Datei existiert nicht.");
}
catch (DirectoryNotFoundException e) {
// falls das Verzeichnis nicht existiert
Console.WriteLine(e.Message + "- Die Datei existiert nicht.");
} Warum die 3fache Schreibarbeit, wenn ich es auch einfach wie folgt lösen könnte: Code: try {
obj.GetData();
}
catch (Exception e) {
Console.WriteLine(e.Message + "- Die Datei existiert nicht.");
} Die einzige logische Erklärung, welche mir einfällt währe, dass die 2te Variante mit schlechten Programmierstil gleichzusetzten ist. mfg Binäru$ |
| | |
| | #11 (permalink) |
| Boardfotograf Registriert seit: 21.12.07 ![]() Likes: 63 | Ich denke, dass das nur ein Beispiel war. Das erste Beispiel ist eher für Fälle bei denen in den einzelnen catch-Blöcken etwas anderes passieren soll (in der Regel mehr als nur eine Fehlermeldung). |
| | |
| | #12 (permalink) |
| Themenstarter Registriert seit: 09.09.08 ![]() Likes: 0 | naja stimmt schon aber mein ausbilder meinte es sei sehr gut so^^ also belasse ich es mal dabei aber danke für die gute hilfe ich werde mich bestimmt wieder melden aber ihr könnt mich ja auch mal über icq anschreiben und mir einen crashkurs im programmieren geben wenn ihr wollt. bin immer so gegen 18 Uhr am PC ICQ: 266873497 Mit freundlichen Grüßen Sven |
| | |
| | #13 (permalink) | |
| Zitat:
Ich denke fpr den Crashkurs sollte dein Ausbilder verantwortlich sein, oder? Sprich Ihn mal drau an und frag ihn, ob er dir einige Kniffe und Trick zeigen könnte. Grundlagen sollten ja bei dir schon vorhanden sein. Hab dich mal geaddet im ICQ. Wenn du fragen o.Ä. hast kannste mich gerne fragen. [/OT] | ||
| | |
| | #14 (permalink) |
| Themenstarter Registriert seit: 09.09.08 ![]() Likes: 0 | naja er sagt mir die ganze Zeit, das ich autodidaktisch arbeiten soll. Klappt ja auch im Prinzip aber wenn ich irgentwo häng und dann net weiterkomm dachte ich eigendlich das ich dann Hilfe von ihm bekommen würde. Das war aber nicht der Fall... Naja hab dann ja jetzt trotzdem nen ansprechpartner^^ Mit freudlichen Grüßen Schnauf von mir aus close |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| try&catch Java | tanj | Code Kitchen | 11 | 24.06.08 16:48 |