Salve a tutti,
sono qui con un'altrodubbio riguardante ai costruitti sulle gestioni delle eccezioni.

Il primo che ci è stato fatto vedere è sull'uso del comando "throw" ed è qualcosa del seguente tipo:

codice:
if(<condizione>)
{
<istruzioni>
}
else throw eccezione();
Già qui non ho capito bene come funziona, ovvero chiama una funzion a mio piacimento in caso la condizione dell'if è falsa? e che differenza c'è tra il "chiamarla normalmente" ed usare il comando throw ?

Un'altro esempio che c'è stato fatto vedere al volo è con try e catch in questo modo:

codice:
try{
<istruzioni>
}
catch( domain_error){
<istruzioni>
}
In quest'altro caso cosa fa? Prova a svolgere delle istruzioni e se ritorna qualche errore fa ciò che c'è scritto nel catch? E quel "domain_error" che sarebbe?

Oppure "throw" segnala un eccezione e la catch riceve quel tipo di eccezione e si regola di conseguenza? Potreste fari qualche esempio di codice funzionante per capire meglio?

Vi ringrazio in anticipo,
Neptune.