diff --git a/src/filesystem.cpp b/src/filesystem.cpp
index 576b27d..b156e22 100644
--- a/src/filesystem.cpp
+++ b/src/filesystem.cpp
@@ -689,7 +689,20 @@ void FileSystem::openReadRaw(SDL_RWops &ops,
                              bool freeOnClose)
 {
 	PHYSFS_File *handle = PHYSFS_openRead(filename);
-	assert(handle);
+
+	if (!handle)
+	{
+		PHYSFS_ErrorCode error = PHYSFS_getLastErrorCode();
+		switch (error)
+		{
+		case PHYSFS_ERR_NOT_FOUND:
+		case PHYSFS_ERR_NOT_A_FILE:
+			throw Exception(Exception::NoFileError, "%s", filename);
+		default:
+			throw Exception(Exception::PHYSFSError,
+			                "PhysFS: %s", PHYSFS_getErrorByCode(error));
+		}
+	}
 
 	initReadOps(handle, ops, freeOnClose);
 }