
#define MAX_BUFFER  1024

int download_file(const char *url) {
    char *buffer = NULL;
    int url_socket;
    
    try {
        buffer = malloc(MAX_BUFFER);
        url_socket = socket(...);
        ...
        
    } catch(...) {
        close(url_socket);
        free(buffer);
        throw;  // rethrow partially handled exception
    }

    return 0;
}

int main() {
    
    try {
        download_file("http://solaris-x86.org/drivers/e1000g.zip");
    } catch(...) {
        cout << "Download failed" << endl;
    }
    
}
