I believe the 'Not Sent' Tracking extract may be what you are looking for.
This list contains information on send jobs and messages that did not
This will provide a list of those that were 'not sent' as part of a job, whether due to List Detective, an error, etc.
It is not real time as you would need to extract it every time you need an update, but it should provide what you need at a scheduled interval.
Sample of csv:
Otherwise for more real time/specific tracking of it, you can utilize the 'NotSentEvent' object for the SOAP API.
The NotSentEvent object contains information on when email message
failed to be sent.
Example SOAP body:
You can change your filter to fit your need.
Sample of Response:
<PartnerKey xsi:nil="true" />
<ObjectID xsi:nil="true" />
As has been mentioned in other answers, for pre-send, your best bet is the REST API validateEmail endpoint. But this will not guarantee it still passes at send time, as there are other validations done prior to send that are not on this endpoint.
So I usually use this as a first level of protection then add in the NotSent Report to find those that slipped through and correct accordingly.