Perché non possono essere create eccezioni personalizzate "reali"? [chiuso]

-3

Con "reale" intendo eccezioni che funzionerebbero come quelle predefinite dal sistema.

Intendo dire che per un'eccezione personalizzata devi utilizzare la parola riservata throw CustomException dopo aver controllato la condizione che potrebbe causare l'eccezione, ma se hai fatto che non c'è bisogno di lanciare l'Exception, puoi lavorare su cosa sta causando l'eccezione sullo stesso blocco if.

Ma per quanto ne so non c'è modo di farlo, ad esempio in C # e in Java qualcosa del genere:

Supponiamo che un'eccezione personalizzata debba essere attivata ogni volta che l'utente immette una stringa che contiene uno "0", quindi nella classe che definisce l'eccezione dovrebbe esserci un metodo che potrebbe essere qualcosa del tipo:

void WayOfActingIfAConditionHappens (Condition thatCondition)

Quindi, automaticamente ogni volta che si verifica Condizione, l'Eccezione viene generata come un'eccezione predefinita, a condizione che provi a catturare il blocco.

Voglio dire ora invece di controllare le condizioni e lanciare l'Eccezione potresti lavorare in questo modo:

try
{
... (Code without throws MyException)
}
catch (MyException ex)
{
...
}

In questo modo invece di dover controllare ogni cosa che l'utente inserisce, puoi semplicemente lasciare che il catch catch provi a fare il lavoro.

Quali sono le ragioni per non aver implementato qualcosa del genere? Sarebbe troppo difficile da fare?

    
posta user2638180 08.05.2016 - 14:06
fonte

1 risposta

6

L'eccezione predefinita non funziona come descrivi. Quando viene generata un'eccezione predefinita, è solo perché esiste un throw -statement da qualche parte all'interno della libreria framework, che viene chiamata come parte del normale percorso di esecuzione.

Se comprendo correttamente il tuo suggerimento, proponi che una classe di eccezioni dovrebbe essere in grado di rilevare automaticamente quando si verifica una condizione in qualsiasi parte del programma - senza che il controllo per la condizione debba essere chiamato esplicitamente. In un linguaggio imperativo ciò significherebbe che il framework dovrebbe eseguire automaticamente tutti i possibili controlli delle eccezioni dopo ogni operazione del programma. Questo sarebbe proibitivamente costoso. Non importa, non sarebbe molto utile in primo luogo.

    
risposta data 08.05.2016 - 14:19
fonte

Leggi altre domande sui tag