Actarus5 ha scritto: ↑venerdì 22 settembre 2023, 5:15
Ha senso provare con un try catch allora, in questo modo, però non conosco la libreria in questione, ho solo letto velocemente qualcosa su github:
Codice: Seleziona tutto
try {
json::parse(f);
}
catch (json::parse_error& e) {
std::cout << "message: " << e.what() << '\n'
<< "exception id: " << e.id << '\n'
}
il problema è che non crasha li, crasha dopo X iterazioni (è un ciclo for). Il codice fa questo:
1. Carica il Json con una lista
2. Cicla la lista processata con la libreria json e inserisce le sue informazioni in dentro un ordered_map
3. Un ciclo for comincia a "generare" dei dati e se quel dato NON è presente nell'unordered map, lo inserisce, altrimenti lo aggiorna e qui crasha (non c'è un numero di iterazioni, a volte lo fa dopo 100.000 altre dopo 200.000)
Il tutto crasha quando fa il controllo con "clusterExists".
Ho notato due comportamenti:
- Se io metto il return prima del json::parse, non "pre-caricherà" nessun elemento nella mappa, il risultato sarà che il codice non avrà mai nessun problema
- Ho provato a inserire UN solo elemento processato dal json (sono 3gb di dati altrimenti), verificare se l'accoppiata "chiave/valore" abbia problemi, e non ha nessuno (posso accedere, modificare, leggere, verificare se la chiave esiste, etc..., etc...), ma anche in questo caso, se poi avvio il codice, questo crasherà dopo X iterazioni del ciclo for del punto 3
Magari crashasse direttamente sul json::parse, non starei impazzendo così altrimenti