Browse Source

more verbose error messages

David Rose 16 years ago
parent
commit
e68e597b6a
1 changed files with 27 additions and 12 deletions
  1. 27 12
      direct/src/stdpy/file.py

+ 27 - 12
direct/src/stdpy/file.py

@@ -46,7 +46,8 @@ class file:
             # We can also "open" a VirtualFile object for reading.
             self.__stream = filename.openReadFile(autoUnwrap)
             if not self.__stream:
-                raise IOError
+                message = 'Could not read virtual file %s' % (repr(filename))
+                raise IOError, message
             self.__needsVfsClose = True
             readMode = True
 
@@ -92,35 +93,41 @@ class file:
             if mode == 'w':
                 self.__stream = pm.OFileStream()
                 if not filename.openWrite(self.__stream, True):
-                    raise IOError
+                    message = 'Could not open %s for writing' % (filename)
+                    raise IOError, message
                 writeMode = True
                 
             elif mode == 'a':
                 self.__stream = pm.OFileStream()
                 if not filename.openAppend(self.__stream):
-                    raise IOError
+                    message = 'Could not open %s for writing' % (filename)
+                    raise IOError, message
                 writeMode = True
 
             elif mode == 'w+':
                 self.__stream = pm.FileStream()
                 if not filename.openReadWrite(self.__stream, True):
-                    raise IOError
+                    message = 'Could not open %s for writing' % (filename)
+                    raise IOError, message
                 readMode = True
                 writeMode = True
 
             elif mode == 'a+':
                 self.__stream = pm.FileStream()
                 if not filename.openReadAppend(self.__stream):
-                    raise IOError
+                    message = 'Could not open %s for writing' % (filename)
+                    raise IOError, message
                 readMode = True
                 writeMode = True
 
             elif mode == 'r+':
                 self.__stream = pm.FileStream()
                 if not filename.exists():
-                    raise IOError
+                    message = 'No such file: %s' % (filename)
+                    raise IOError, message
                 if not filename.openReadWrite(self.__stream, False):
-                    raise IOError
+                    message = 'Could not open %s for writing' % (filename)
+                    raise IOError, message
                 readMode = True
                 writeMode = True
 
@@ -130,7 +137,11 @@ class file:
                 
                 self.__stream = _vfs.openReadFile(filename, autoUnwrap)
                 if not self.__stream:
-                    raise IOError
+                    if not filename.exists():
+                        message = 'No such file: %s' % (filename)
+                    else:
+                        message = 'Could not open %s for reading' % (filename)
+                    raise IOError, message
                 self.__needsVfsClose = True
                 readMode = True
 
@@ -170,7 +181,8 @@ class file:
                 # The stream is not even open at all.
                 raise ValueError
             # The stream is open only in write mode.
-            raise IOError
+            message = 'Attempt to read from write-only stream'
+            raise IOError, message
         
         self.__lastWrite = False
         if size >= 0:
@@ -188,7 +200,8 @@ class file:
                 # The stream is not even open at all.
                 raise ValueError
             # The stream is open only in write mode.
-            raise IOError
+            message = 'Attempt to read from write-only stream'
+            raise IOError, message
 
         self.__lastWrite = False
         return self.__reader.readline()
@@ -229,7 +242,8 @@ class file:
                 # The stream is not even open at all.
                 raise ValueError
             # The stream is open only in read mode.
-            raise IOError
+            message = 'Attempt to write to read-only stream'
+            raise IOError, message
         self.__writer.appendData(str)
         self.__lastWrite = True
 
@@ -239,7 +253,8 @@ class file:
                 # The stream is not even open at all.
                 raise ValueError
             # The stream is open only in read mode.
-            raise IOError
+            message = 'Attempt to write to read-only stream'
+            raise IOError, message
         for line in lines:
             self.__writer.appendData(line)
         self.__lastWrite = True