Hej, ärver från System.Exception och skriv en ny konstruktor helt enkelt. När du sedan skapar en instans av exceptionet måste du skicka in de parametrarna ärver från System.Exception och skriv en ny konstruktor helt enkelt. När du sedan skapar en instans av exceptionet måste du skicka in de parametrarna Fast eftersom det är en WebService kan jag inte kasta ett System.Exception utan måste kasta ett SoapException. Att ärva från "vanliga" Execption har jag inga problem med utan det är just SoapExeption jag har problem med. När du ärver ifrån en basklass så måster en instans av basklassen också skapas när du skapar en instans av subklassen. Det gör den genom att ta vad du skickar till din subklass-konstruktor och skicka vidare till superklassen. Ärva SoapException
Jag håller på och knåpar lite på en WebService och vill kasta Exceptions från den.
Från min metod vill jag skapa ett eget undantag. T.ex. BadPasswordException. Testade först att ärva från vanliga System.Exception men det gick inget vidare så testade jag att ärva från SoapException istället men får det inte att funga som jag vill. Jag vill i konstruktorn för min BadPasswordException sätta alla egenskaper som behövs så jag bara kan instansiera klassen och kasta den men det funkar inte alls. Får ett fel som säger "No overload for method 'SoapException' takes '0' arguments".
Någon som har koll på hur man löser detta?
//KalleSv: Ärva SoapException
Sv: Ärva SoapException
Sv: Ärva SoapException
Sv: Ärva SoapException
Om din superklass (basklass) inte har en "default constructor" (dvs en konstruktor som tar exakt 0 parametrar) men din subklass har, då måste du tala om för CLR vilken av basklassen konstruktorer du vill använda istället:
public class MySoapException : SoapException
{
public MySoapException() : base("", new XmlQualifiedName())
{
// Instanciate
}
}
För övrigt bör man aldrig ärva direkt från System.Exception, den klassen grenar ut sig till två subklasser System.SystemException och System.ApplicationException.
Om jag i min applikation vill skapa egna Exceptions så är det från System.ApplicationException jag skall ärva. SystemException är reserverat för fel som Common Language Runtime eller sub-system till CLR kastar.