Error recovery is an integral concern in compilers. Improving error recovery requires comprehension of a large and complex code base, in order to locate the places which raise errors and places which handle them. This involves significant amounts of cognitive effort to identify these errorrelated static locations in the compiler, and the dynamic points in compilation where errors are detected. Essentially, the error recovery concern is a global design issue which is entangled with many other functional concerns, and whose implementation is frequently scattered across different program elements. Current compiler implementations often do not explictly identify error-related control dependencies and fail to separately characterize the actions to take in the event of errors. In the context of the AspectJ compiler (ajc), we modularize error concerns as join points-and-advice aspects which provide improved modularity by explicitly declaring the loci of error detection, and providing exte...