@@ -79,16 +79,12 @@ ExifReader::~ExifReader()
7979 */
8080bool ExifReader::parse ()
8181{
82- try {
83- m_exif = getExif ();
84- if ( !m_exif.empty () )
85- {
86- return true ;
87- }
88- return false ;
89- } catch (ExifParsingError&) {
90- return false ;
82+ m_exif = getExif ();
83+ if ( !m_exif.empty () )
84+ {
85+ return true ;
9186 }
87+ return false ;
9288}
9389
9490
@@ -150,11 +146,11 @@ std::map<int, ExifEntry_t > ExifReader::getExif()
150146 case COM:
151147 bytesToSkip = getFieldSize ();
152148 if (bytesToSkip < markerSize) {
153- throw ExifParsingError ();
149+ return std::map< int , ExifEntry_t > ();
154150 }
155151 m_stream.seekg ( static_cast <long >( bytesToSkip - markerSize ), m_stream.cur );
156152 if ( m_stream.fail () ) {
157- throw ExifParsingError ();
153+ return std::map< int , ExifEntry_t > ();
158154 }
159155 break ;
160156
@@ -165,12 +161,12 @@ std::map<int, ExifEntry_t > ExifReader::getExif()
165161 case APP1: // actual Exif Marker
166162 exifSize = getFieldSize ();
167163 if (exifSize <= offsetToTiffHeader) {
168- throw ExifParsingError ();
164+ return std::map< int , ExifEntry_t > ();
169165 }
170166 m_data.resize ( exifSize - offsetToTiffHeader );
171167 m_stream.seekg ( static_cast <long >( offsetToTiffHeader ), m_stream.cur );
172168 if ( m_stream.fail () ) {
173- throw ExifParsingError ();
169+ return std::map< int , ExifEntry_t > ();
174170 }
175171 m_stream.read ( reinterpret_cast <char *>(&m_data[0 ]), exifSize - offsetToTiffHeader );
176172 exifFound = true ;
@@ -414,7 +410,7 @@ std::string ExifReader::getString(const size_t offset) const
414410 dataOffset = getU32 ( offset + 8 );
415411 }
416412 if (dataOffset > m_data.size () || dataOffset + size > m_data.size ()) {
417- throw ExifParsingError ();
413+ return std::string ();
418414 }
419415 std::vector<uint8_t >::const_iterator it = m_data.begin () + dataOffset;
420416 std::string result ( it, it + size ); // copy vector content into result
@@ -431,7 +427,7 @@ std::string ExifReader::getString(const size_t offset) const
431427uint16_t ExifReader::getU16 (const size_t offset) const
432428{
433429 if (offset + 1 >= m_data.size ())
434- throw ExifParsingError () ;
430+ return 0 ;
435431
436432 if ( m_format == INTEL )
437433 {
@@ -449,7 +445,7 @@ uint16_t ExifReader::getU16(const size_t offset) const
449445uint32_t ExifReader::getU32 (const size_t offset) const
450446{
451447 if (offset + 3 >= m_data.size ())
452- throw ExifParsingError () ;
448+ return 0 ;
453449
454450 if ( m_format == INTEL )
455451 {
0 commit comments