| 

.NET C# Java Javascript Exception

2
Frage c# Dividieren durch 0

Classe : CMeieneFormel // Fehler tritt hier auf wie verhindern!

return (Convert.ToDecimal(verkaufp) - Convert.ToDecimal(handelsp)) / Convert.ToDecimal(verkaufp) * 100;

Fehlermeldung:
divides by zero

In Form2: Wenn in der Textbox.text 0 enthalten ist kommt es ja wie jeder weis
zu dieser Fehlermeldung

Wie kann man Verhindern das wenn in der CMeineFormel Klasse im Teiler 0 enthalten ist
eine Fehlermeldung ausgibt und zum Textbox.text zurück springt Error Provider
ohne das das Programm abstürzt.

Hat einer eine Idee dazu.

Versucht habe ich mal dieses hier funktioniert aber nicht in der Klasse:

//int value = 0;
//int.TryParse(test, out value);
decimal value = 0;
//if (String.IsNullOrEmpty(value))
if (decimal.TryParse(verkaufp, out value))

{
MessageBox.Show("Enter Input <0,00> Please.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
// Textbox.text clear !!!! dataGridView1.Rows.Clear();
}
else
{
ExceptionDispatchInfo.Capture(new Exception(verkaufp)); // Exeption
}

//--decimal value = 0; // wie in string definierern
//--if (decimal.TryParse(verkaufp, out value))
//if (int.TryParse(test, out value))
//--{
//Abfrage ausgabe kommt zu früh und ist falsch

//--MessageBox.Show(verkaufp, "Teilen durch null ist nicht möglich Parse 1");

//--}
//--else
//--{
//return (Convert.ToDecimal(verkaufp) - Convert.ToDecimal(handelsp)) / Convert.ToDecimal(verkaufp) * 100;
// Textfenster springen! Wie
//--MessageBox.Show("Teilen durch null ist nicht möglich 2");
//--}


Gruss

TM
22.12.2022
tsmeier 81 1 3
7 Antworten
0
So habe mal dieses Versucht - geht aber auch nicht.

if (verkaufp == null)   // if (verkaufp == null)
{
return (Convert.ToDecimal(verkaufp) - Convert.ToDecimal(handelsp)) / Convert.ToDecimal(verkaufp) * 100;
}
else
{
// throw new ApplicationException ("Teilen durch null ist nicht möglich"); //Kommt jedes mal Exeption >0
MessageBox.Show("0");
}


Gruss
TM
22.12.2022
tsmeier 81 1 3
0
Vielleicht sollte man die Fehler Auswertung in eine Classe auslagern

Wer kann helfen

if (verkaufp == null)   // if (verkaufp == null)
{
return (Convert.ToDecimal(verkaufp) - Convert.ToDecimal(handelsp)) / Convert.ToDecimal(verkaufp) * 100;
}
else
{
throw new DurchNullGeteilt (); //Kommt jedes mal Exeption >0
//MessageBox.Show("0");
}


classe - DurchNullGeteilt

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Preisfindung
{
internal class DurchNullGeteilt : ApplicationException

{

// ?????????????????????????


}
}



Gruss
TM
22.12.2022
tsmeier 81 1 3
0
So nochmal divides by zero

try
{
return (Convert.ToDecimal(verkaufp) - Convert.ToDecimal(handelsp)) / Convert.ToDecimal(verkaufp) * 100;
}
catch (DivideByZeroException)
{
//TODO: log error

MessageBox.Show("Can't divide by 0");

throw;//propage this error
}


Geht auch nicht Programm stürzt ab.

Gruss
TM
23.12.2022
tsmeier 81 1 3
0
So try catch geht auch nicht divides by zero

try
{
return (Convert.ToDecimal(verkaufp) - Convert.ToDecimal(handelsp)) / Convert.ToDecimal(verkaufp) * 100;
}
catch (DivideByZeroException ex)
{
//TODO: log error

MessageBox.Show("Can't divide by 0");

throw ex;//propage this error
}


Gruss
TM
23.12.2022
tsmeier 81 1 3
0
In der Classe CMeineFormel

Wie oben schon mal probiert geht nicht (Classe)
So die könnte man es Prüfen aber wie die Ausführung Stoppen so das das Programm nicht abstürtzt!

verkaufp = "0";
if (object.ReferenceEquals(null, verkaufp))
{
MessageBox.Show("Object is null");
}
else
{
MessageBox.Show("Object is not null");
verkaufp = "";
}


Gruss
TM
25.12.2022
tsmeier 81 1 3
0
So habe mal das so gemacht 0 Abfrage & Class 0 abfrage - Kann jetzt ohne Prg Absturz witer arbeiten. Aber habt ihr eine Idee wie man das elagnater ausführen könnte Idenn Willkommen.

if (String.IsNullOrWhiteSpace(vp))  // NotNull  IsNullOrEmpty Vor net4.0
//MessageBox.Show("is null or empty");
MessageBox.Show("Enter NUM Please.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
else
//MessageBox.Show(String.Format("(\"{0}\") is neither null nor empty", vp));
errorProvider1.SetError(TxtVkPreis, "Please enter NUM");
//return; // Am Schluss Schreiben


Class CMeineFormel

if (!string.IsNullOrWhiteSpace(verkaufp))
MessageBox.Show("is null or empty");
else
MessageBox.Show(verkaufp, "Please enter NUM");
return 0;
return (Convert.ToDecimal(verkaufp) - Convert.ToDecimal(handelsp)) / Convert.ToDecimal(verkaufp) * 100;
return 0;


GRUSS
TM
25.12.2022
tsmeier 81 1 3
0
So habs mit try catch so behoben:

try
{
return (Convert.ToDecimal(verkaufp) - Convert.ToDecimal(handelsp)) / Convert.ToDecimal(verkaufp) * 100;
}
catch (Exception ex)
{
switch (ex)
{
case FormatException:
//Console.WriteLine("Format Exception!");
MessageBox.Show("Format Exception!");
break;
case DivideByZeroException:
//Console.WriteLine("Divide By Zero Exception!");
MessageBox.Show("Divide By Zero Exception!");
break;
case OverflowException:
//Console.WriteLine("Overflow Exception!");
MessageBox.Show("Overflow Exception!");
break;
}
}
return 0; // -1 geht auch mit 0


Gruss
TM
02.01.2023
tsmeier 81 1 3

Stelle deine Null-Frage jetzt!