1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-10 23:48:04 +02:00

Throw std::runtime_exception instead of a pointer to new one

cf. https://isocpp.org/wiki/faq/exceptions#what-to-throw
This commit is contained in:
Michał Janiszewski 2018-10-31 07:27:54 +01:00
parent 2a282c9a8e
commit 0ff2e1180d
5 changed files with 20 additions and 20 deletions

View File

@ -55,7 +55,7 @@ CZipOutputStream::CZipOutputStream(CZipSaver * owner_, zipFile archive, const st
); );
if(status != ZIP_OK) if(status != ZIP_OK)
throw new std::runtime_error("CZipOutputStream: zipOpenNewFileInZip failed"); throw std::runtime_error("CZipOutputStream: zipOpenNewFileInZip failed");
owner->activeStream = this; owner->activeStream = this;
} }
@ -88,7 +88,7 @@ CZipSaver::CZipSaver(std::shared_ptr<CIOApi> api, const boost::filesystem::path
handle = zipOpen2_64((const void *) & path, APPEND_STATUS_CREATE, nullptr, &zipApi); handle = zipOpen2_64((const void *) & path, APPEND_STATUS_CREATE, nullptr, &zipApi);
if (handle == nullptr) if (handle == nullptr)
throw new std::runtime_error("CZipSaver: Failed to create archive"); throw std::runtime_error("CZipSaver: Failed to create archive");
} }
CZipSaver::~CZipSaver() CZipSaver::~CZipSaver()
@ -112,7 +112,7 @@ CZipSaver::~CZipSaver()
std::unique_ptr<COutputStream> CZipSaver::addFile(const std::string & archiveFilename) std::unique_ptr<COutputStream> CZipSaver::addFile(const std::string & archiveFilename)
{ {
if(activeStream != nullptr) if(activeStream != nullptr)
throw new std::runtime_error("CZipSaver::addFile: stream already opened"); throw std::runtime_error("CZipSaver::addFile: stream already opened");
std::unique_ptr<COutputStream> stream(new CZipOutputStream(this, handle, archiveFilename)); std::unique_ptr<COutputStream> stream(new CZipOutputStream(this, handle, archiveFilename));
return std::move(stream); return std::move(stream);

View File

@ -888,7 +888,7 @@ JsonNode CMapLoaderJson::getFromArchive(const std::string & archiveFilename)
ResourceID resource(archiveFilename, EResType::TEXT); ResourceID resource(archiveFilename, EResType::TEXT);
if(!loader.existsResource(resource)) if(!loader.existsResource(resource))
throw new std::runtime_error(archiveFilename+" not found"); throw std::runtime_error(archiveFilename+" not found");
auto data = loader.load(resource)->readAll(); auto data = loader.load(resource)->readAll();
@ -967,7 +967,7 @@ void CMapLoaderJson::readTerrainTile(const std::string & src, TerrainTile & tile
int rawType = vstd::find_pos(terrainCodes, typeCode); int rawType = vstd::find_pos(terrainCodes, typeCode);
if(rawType < 0) if(rawType < 0)
throw new std::runtime_error("Invalid terrain type code in "+src); throw std::runtime_error("Invalid terrain type code in "+src);
tile.terType = ETerrainType(rawType); tile.terType = ETerrainType(rawType);
} }
@ -978,7 +978,7 @@ void CMapLoaderJson::readTerrainTile(const std::string & src, TerrainTile & tile
pos++; pos++;
int len = pos - startPos; int len = pos - startPos;
if(len<=0) if(len<=0)
throw new std::runtime_error("Invalid terrain view in "+src); throw std::runtime_error("Invalid terrain view in "+src);
const std::string rawCode = src.substr(startPos, len); const std::string rawCode = src.substr(startPos, len);
tile.terView = atoi(rawCode.c_str()); tile.terView = atoi(rawCode.c_str());
startPos+=len; startPos+=len;
@ -986,7 +986,7 @@ void CMapLoaderJson::readTerrainTile(const std::string & src, TerrainTile & tile
{//terrain flip {//terrain flip
int terrainFlip = vstd::find_pos(flipCodes, src.at(startPos++)); int terrainFlip = vstd::find_pos(flipCodes, src.at(startPos++));
if(terrainFlip < 0) if(terrainFlip < 0)
throw new std::runtime_error("Invalid terrain flip in "+src); throw std::runtime_error("Invalid terrain flip in "+src);
else else
tile.extTileFlags = terrainFlip; tile.extTileFlags = terrainFlip;
} }
@ -1001,7 +1001,7 @@ void CMapLoaderJson::readTerrainTile(const std::string & src, TerrainTile & tile
{ {
rawType = vstd::find_pos(riverCodes, typeCode); rawType = vstd::find_pos(riverCodes, typeCode);
if(rawType < 0) if(rawType < 0)
throw new std::runtime_error("Invalid river type in "+src); throw std::runtime_error("Invalid river type in "+src);
else else
{ {
tile.riverType = ERiverType::ERiverType(rawType); tile.riverType = ERiverType::ERiverType(rawType);
@ -1018,7 +1018,7 @@ void CMapLoaderJson::readTerrainTile(const std::string & src, TerrainTile & tile
pos++; pos++;
int len = pos - startPos; int len = pos - startPos;
if(len<=0) if(len<=0)
throw new std::runtime_error("Invalid road dir in "+src); throw std::runtime_error("Invalid road dir in "+src);
const std::string rawCode = src.substr(startPos, len); const std::string rawCode = src.substr(startPos, len);
tile.roadDir = atoi(rawCode.c_str()); tile.roadDir = atoi(rawCode.c_str());
startPos+=len; startPos+=len;
@ -1027,7 +1027,7 @@ void CMapLoaderJson::readTerrainTile(const std::string & src, TerrainTile & tile
{//road flip {//road flip
int flip = vstd::find_pos(flipCodes, src.at(startPos++)); int flip = vstd::find_pos(flipCodes, src.at(startPos++));
if(flip < 0) if(flip < 0)
throw new std::runtime_error("Invalid road flip in "+src); throw std::runtime_error("Invalid road flip in "+src);
else else
tile.extTileFlags |= (flip<<4); tile.extTileFlags |= (flip<<4);
} }
@ -1039,7 +1039,7 @@ void CMapLoaderJson::readTerrainTile(const std::string & src, TerrainTile & tile
startPos+=2; startPos+=2;
int rawType = vstd::find_pos(riverCodes, typeCode); int rawType = vstd::find_pos(riverCodes, typeCode);
if(rawType < 0) if(rawType < 0)
throw new std::runtime_error("Invalid river type in "+src); throw std::runtime_error("Invalid river type in "+src);
tile.riverType = ERiverType::ERiverType(rawType); tile.riverType = ERiverType::ERiverType(rawType);
} }
{//river dir {//river dir
@ -1048,7 +1048,7 @@ void CMapLoaderJson::readTerrainTile(const std::string & src, TerrainTile & tile
pos++; pos++;
int len = pos - startPos; int len = pos - startPos;
if(len<=0) if(len<=0)
throw new std::runtime_error("Invalid river dir in "+src); throw std::runtime_error("Invalid river dir in "+src);
const std::string rawCode = src.substr(startPos, len); const std::string rawCode = src.substr(startPos, len);
tile.riverDir = atoi(rawCode.c_str()); tile.riverDir = atoi(rawCode.c_str());
startPos+=len; startPos+=len;
@ -1056,7 +1056,7 @@ void CMapLoaderJson::readTerrainTile(const std::string & src, TerrainTile & tile
{//river flip {//river flip
int flip = vstd::find_pos(flipCodes, src.at(startPos++)); int flip = vstd::find_pos(flipCodes, src.at(startPos++));
if(flip < 0) if(flip < 0)
throw new std::runtime_error("Invalid road flip in "+src); throw std::runtime_error("Invalid road flip in "+src);
else else
tile.extTileFlags |= (flip<<2); tile.extTileFlags |= (flip<<2);
} }
@ -1069,14 +1069,14 @@ void CMapLoaderJson::readTerrainLevel(const JsonNode & src, const int index)
const JsonVector & rows = src.Vector(); const JsonVector & rows = src.Vector();
if(rows.size() != map->height) if(rows.size() != map->height)
throw new std::runtime_error("Invalid terrain data"); throw std::runtime_error("Invalid terrain data");
for(pos.y = 0; pos.y < map->height; pos.y++) for(pos.y = 0; pos.y < map->height; pos.y++)
{ {
const JsonVector & tiles = rows[pos.y].Vector(); const JsonVector & tiles = rows[pos.y].Vector();
if(tiles.size() != map->width) if(tiles.size() != map->width)
throw new std::runtime_error("Invalid terrain data"); throw std::runtime_error("Invalid terrain data");
for(pos.x = 0; pos.x < map->width; pos.x++) for(pos.x = 0; pos.x < map->width; pos.x++)
readTerrainTile(tiles[pos.x].String(), map->getTile(pos)); readTerrainTile(tiles[pos.x].String(), map->getTile(pos));
@ -1247,7 +1247,7 @@ void CMapSaverJson::addToArchive(const JsonNode & data, const std::string & file
std::unique_ptr<COutputStream> stream = saver.addFile(filename); std::unique_ptr<COutputStream> stream = saver.addFile(filename);
if (stream->write((const ui8*)s.c_str(), s.size()) != s.size()) if (stream->write((const ui8*)s.c_str(), s.size()) != s.size())
throw new std::runtime_error("CMapSaverJson::saveHeader() zip compression failed."); throw std::runtime_error("CMapSaverJson::saveHeader() zip compression failed.");
} }
} }

View File

@ -137,7 +137,7 @@ const CSpell::LevelInfo & CSpell::getLevelInfo(const int level) const
if(level < 0 || level >= GameConstants::SPELL_SCHOOL_LEVELS) if(level < 0 || level >= GameConstants::SPELL_SCHOOL_LEVELS)
{ {
logGlobal->error("CSpell::getLevelInfo invalid school level %d", level); logGlobal->error("CSpell::getLevelInfo invalid school level %d", level);
throw new std::runtime_error("Invalid school level"); throw std::runtime_error("Invalid school level");
} }
return levels.at(level); return levels.at(level);

View File

@ -84,7 +84,7 @@ static JsonNode getFromArchive(CZipLoader & archive, const std::string & archive
ResourceID resource(archiveFilename, EResType::TEXT); ResourceID resource(archiveFilename, EResType::TEXT);
if(!archive.existsResource(resource)) if(!archive.existsResource(resource))
throw new std::runtime_error(archiveFilename+" not found"); throw std::runtime_error(archiveFilename+" not found");
auto data = archive.load(resource)->readAll(); auto data = archive.load(resource)->readAll();
@ -99,7 +99,7 @@ static void addToArchive(CZipSaver & saver, const JsonNode & data, const std::st
std::unique_ptr<COutputStream> stream = saver.addFile(filename); std::unique_ptr<COutputStream> stream = saver.addFile(filename);
if(stream->write((const ui8*)s.c_str(), s.size()) != s.size()) if(stream->write((const ui8*)s.c_str(), s.size()) != s.size())
throw new std::runtime_error("CMapSaverJson::saveHeader() zip compression failed."); throw std::runtime_error("CMapSaverJson::saveHeader() zip compression failed.");
} }
static std::unique_ptr<CMap> loadOriginal(const JsonNode & header, const JsonNode & objects, const JsonNode & surface, const JsonNode & underground) static std::unique_ptr<CMap> loadOriginal(const JsonNode & header, const JsonNode & objects, const JsonNode & surface, const JsonNode & underground)

View File

@ -88,5 +88,5 @@ void MapServiceMock::addToArchive(CZipSaver & saver, const JsonNode & data, cons
std::unique_ptr<COutputStream> stream = saver.addFile(filename); std::unique_ptr<COutputStream> stream = saver.addFile(filename);
if(stream->write((const ui8*)s.c_str(), s.size()) != s.size()) if(stream->write((const ui8*)s.c_str(), s.size()) != s.size())
throw new std::runtime_error("addToArchive: zip compression failed."); throw std::runtime_error("addToArchive: zip compression failed.");
} }