Non si può fare questo in modo statico, perché non esiste tale distinzione.
Qualsiasi eccezione definita nelle librerie di classi Java standard può essere generata dall'applicazione o dal codice di libreria di terze parti. In alcuni casi, è una brutta (o addirittura terribile) idea lanciare un'eccezione standard, ma in altri è la cosa raccomandabile da fare.
L'unico modo possibile per distinguere tra un'eccezione generata dalla JVM e dal codice dell'applicazione è esaminare i frame dello stack dall'eccezione generata per determinare quale classe ha istanziato l'eccezione. (Strettamente parlando che non ti dice dove è stata lanciata l'eccezione ... ma è abbastanza vicino dato che le eccezioni sono quasi sempre istanziate e gettate nella stessa dichiarazione.)
Ma anche questa non è una cosa particolarmente utile fare. Voglio dire, qual è la differenza semantica tra un'eccezione generata dal codice dell'applicazione e la libreria di classi? Di certo non dice nulla sulla causa principale del problema.
fonte
2010-05-29 05:00:40
Eccezioni JVM Tali eccezioni o errori che sono esclusivamente o più generati dalla JVM. Eccezioni programmatiche Tali eccezioni vengono generate esplicitamente dall'applicazione e/o dai programmatori API. – Haxed
@Haxed: il problema è che il programmatore può lanciare esplicitamente QUALSIASI eccezione (eccetto AssertionError). Pertanto, non puoi fare ciò che vuoi fare. – NotMe
@Chris: AssertionError è Throwable, stavo solo chiarendo che non è una RuntimeException come le altre. –