- permission check
- interrupt action that takes too long
- run action in separate thread or even in context of different process or event on other machine
- monitoring
- preparing any data / environment before call and processing results after call
- opening / closing resources
EDIT
Although many years passed since I gave this answer I decided to add the following to make the answer more complete.
- security check.
- fixes of incorrect or behavior of API that you cannot change. For example boolean method that returns
false in some conditions but should return true. You can fix this using AspectJ.