2012-03-16 55 views
0

以下示例來自教程。 當我運行它時,它會拋出異常,然後coredump。 我嘗試使用catch()捕獲異常以避免類似於以下的coredump:當我嘗試從boost :: regex_match(text,e)中捕獲異常時,爲什麼會出現coredump?

但它不起作用。有什麼建議麼?

感謝

-Todd

----核心轉儲信息開頭---

投擲

'的boost :: exception_detail :: clone_impl>' 一個實例後終止叫

what():重複運算符「」無法啓動正則表達式。解析正則表達式時發生錯誤:'>>> HERE >>>'。

中止(核心轉儲)

---- --- END

---程序BEGIN ----

#include <boost/regex.hpp> 
#include <iostream> 
    void print_captures(const std::string& regx, const std::string& text) 

    { 

    boost::regex e(regx); 

    boost::smatch what; 

    std::cout << "Expression: \"" << regx << "\"\n"; 

    std::cout << "Text:  \"" << text << "\"\n"; 

    try { 

    //  boost::regex_match(text, what, e, boost::match_extra); 

    boost::regex_match(text, e); 

    } 

    **catch(boost::regex_error& e) { 

std::cout <<"!!!!\n"; 

    } 

    catch (...) { 

    std::cout << "###\n"; 

    }** 



} 


int main(int , char* []) 

{ 
    print_captures("*", "AAA"); 

} 

---- END -

回答

1

這是boost::regex()的構造函數引發異常:

boost::regex e(regx); 

將它放入try塊中,它將被boost::regex_error&異常處理程序捕獲。

相關問題