PDA

Visualizza versione completa : [C#] Ecezione fai-da-te e problemi di ereditarietÓ


realtebo
09-03-2008, 15.56.54
Guardando la definizione della classe ApplicationException vedo quando segue:



namespace System
{
public class ApplicationException : Exception
{
public ApplicationException();
public ApplicationException(string message);
protected ApplicationException(SerializationInfo info, StreamingContext context);
public ApplicationException(string message, Exception innerException);
}
}



Deduco che DERIVANDO una classe SettingsException da ApplicationException, la mia eccezione fai-da-te EREDITA tutti i suoi
metodi, giusto?

PerchŔ allora non mi Ŕ permesso scrivere semplicemente quanto segue, ma invece devo implementare (che Ŕ l'unico che uso nel codice) il costruttore con la stringa message come parametro ?


public class SchemaException : ApplicationException
{ }


Io desidero potere scrivere, per esempio:


throw new SchemaException("Parametri errati ... bla bla bla ");


ma non mi Ŕ permesso: il compilatore mi segnala per la precisione:

'GameEngine.SchemaException' does not contain a constructor that takes '1' arguments


La domanda, ripeto, Ŕ: perchŔ non eredito i costruttori come invece mi aspetterei? A che serve derivare una classe se non eredito automaticamente i suoi metodi ed i costruttori?

realtebo
09-03-2008, 16.03.43
Aggiungo a titolo di paragone che se creo una classe 'Car' con un costruttore senza argomenti e uno con la velocitÓ massima come argomento, quindi creo una classe "CarLentissima" senza scrivere NULLLLLLA, posso tranquillamente scrivere

CarLetissima fiat = new CarLentissima(50);

Cosa cambia con la mia eccezione ?