Il problema è che il gestore predefinito è definito in Sinatra :: ShowExceptions, che è controllato dall'impostazione di : raise_errors e questa impostazione è tutto o niente. Se : raise_errors è spento allora il metodo errore può essere utilizzato in app Sinatra, ma deve essere utilizzato per tutte le eccezioni, e non c'è accesso al gestore degli errori definito nella Sinatra :: ShowExceptions. Se è attivo, tutte le eccezioni vengono gestite dal middleware ShowExceptions.In Sinatra, c'è un modo per usare il mio gestore di errori per alcuni errori e il gestore predefinito per tutti gli altri errori?
La logica di ciò che voglio fare è che, almeno durante lo sviluppo, voglio che gli errori "attesi" vengano gestiti in modo user-friendly e voglio che gli errori "inaspettati" vengano gestiti in un ambiente sviluppatore moda.
Sto indovinando che l'unico modo per farlo è quello di definire una classe cremagliera middleware che eredita da Sinatra :: ShowExceptions, e che ha qualche opzione in più nel suo uso metodo per specificare quali classi di eccezioni gestire o non gestire.
C'è un modo più semplice che mi manca?
(sto usando JRuby, se questo fa alcuna differenza.)