callback and exception handle