2012-11-01 43 views
7

Ben Cython bir sorun var bir dosya yoksa 0.17.1yayılan C++ istisna Cython için - piton istisna

Benim işlevi std::runtime_error verince, bazı şekilde bu istisna yaymak istiyorum benim Cython kodu.

void loadFile(const string &filename) 
{ 
    // some code, if filename doesn't exists 
    throw std::runtime_error(std::string("File doesn't exists")); 
} 

ve fonksiyon sağ sarma sonra Cython

:

try: 
    loadFile(myfilename) 
except RuntimeError: 
    print "Can't load file" 

ama bu istisna her zaman göz ardı edilir, nasıl Python C++ istisnalar yakalayabilir?

+0

sen hariç' [kullandınız mı http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions bkz: Temelde http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions

, aşağıdaki gibi bir şey yapmak gerekir ] (cdef'de http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions)? – user4815162342

+0

evet, muhtemelen daha fazla kod yazmalıyım ... – linello

+0

C++ tarafında istisnanın atıldığından kesinlikle emin misiniz? Ayrıca, RuntimeError hariç, istisna dışında "e" yazıp "e" yazıp "Python" istisnasının ortaya çıkıp çıkmayacağını görebilirsiniz. – user4815162342

cevap

2

Extern ile istisna işlemlerini bildiriyor musunuz? Yaklaşık C++ özel durum işleme okumalısınız: `+ except + olarak işlev beyan

cdef extern from "some_file.h": 
    cdef int foo() except + 
+0

Evet, işlevimin bildirilen "except +" öğesi var, ancak yine de özel durumu tespit edemiyorum. – linello