Date.st
changeset 202 40ca7cc6fb9c
parent 155 edd7fc34e104
child 241 6f30be88e314
--- a/Date.st	Thu Nov 17 15:12:25 1994 +0100
+++ b/Date.st	Thu Nov 17 15:18:16 1994 +0100
@@ -22,7 +22,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libbasic/Date.st,v 1.13 1994-10-10 00:22:36 claus Exp $
+$Header: /cvs/stx/stx/libbasic/Date.st,v 1.14 1994-11-17 14:17:23 claus Exp $
 '!
 
 !Date class methodsFor:'documentation'!
@@ -43,7 +43,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libbasic/Date.st,v 1.13 1994-10-10 00:22:36 claus Exp $
+$Header: /cvs/stx/stx/libbasic/Date.st,v 1.14 1994-11-17 14:17:23 claus Exp $
 "
 !
 
@@ -615,29 +615,32 @@
     "
 !
 
-readFrom:aStream
+readFrom:aStream onError:exceptionBlock
     "return a new Date, reading a printed representation from aStream.
-     This method assumes american format (i.e. month-day-year) instead
-     of the german/french and other day-month-year.
-     There ought to be a nationalized variant of this."
+     BUG:
+       This method assumes american format (i.e. month-day-year) instead
+       of the german/french and other day-month-year.
+       There ought to be a nationalized variant of this."
     
     |month day year|
 
     [aStream peek isLetterOrDigit] whileFalse:[aStream next].
-    (aStream peek isDigit) ifTrue:[day := Integer readFrom:aStream].
+    (aStream peek isDigit) ifTrue:[
+	day := Integer readFrom:aStream onError:[^ exceptionBlock value]
+    ].
     [aStream peek isLetterOrDigit] whileFalse:[aStream next].
     (aStream peek isLetter) ifTrue:[
 	month := aStream nextWord.
 	day isNil ifTrue:[
 	    [aStream peek isLetterOrDigit] whileFalse:[aStream next].
-	    day := Integer readFrom:aStream.
+	    day := Integer readFrom:aStream onError:[^ exceptionBlock value].
 	]
     ] ifFalse:[
 	month := self nameOfMonth:day.
-	day := Integer readFrom:aStream
+	day := Integer readFrom:aStream onError:[^ exceptionBlock value]
     ].
     [aStream peek isLetterOrDigit] whileFalse:[aStream next].
-    year := Integer readFrom:aStream.
+    year := Integer readFrom:aStream onError:[^ exceptionBlock value].
     ^ self newDay:day month:month year:year
 
     "
@@ -648,6 +651,7 @@
      Date readFromString:'12/31/1992'        
      Date readFromString:'15.4.1992'         -> german; leads to an error
      Date readFromString:'10.4.1992'         -> german; leads to a wrong date
+     Date readFromString:'10.4.1992' onError:['wrong date']
     "
 ! !