author | Claus Gittinger <cg@exept.de> |
Mon, 13 Feb 2017 20:44:57 +0100 | |
changeset 21436 | 0d0ac206b48a |
parent 21070 | 0253b2610ba2 |
child 21088 | 6f4535127ce6 |
child 22120 | ae1bcc4372f1 |
permissions | -rw-r--r-- |
6270 | 1 |
" |
2 |
COPYRIGHT (c) 1997 by eXept Software AG / Claus Gittinger |
|
3 |
All Rights Reserved |
|
4 |
||
5 |
This software is furnished under a license and may be used |
|
6 |
only in accordance with the terms of that license and with the |
|
7 |
inclusion of the above copyright notice. This software may not |
|
8 |
be provided or otherwise made available to, or used by, any |
|
9 |
other person. No title to or ownership of the software is |
|
10 |
hereby transferred. |
|
11 |
" |
|
6271 | 12 |
"{ Package: 'stx:libbasic' }" |
6270 | 13 |
|
17464 | 14 |
"{ NameSpace: Smalltalk }" |
15 |
||
6270 | 16 |
Object subclass:#OSErrorHolder |
10388 | 17 |
instanceVariableNames:'errorSymbol errorCategory parameter' |
21048 | 18 |
classVariableNames:'Signals' |
6270 | 19 |
poolDictionaries:'' |
6271 | 20 |
category:'OS-Support' |
6270 | 21 |
! |
22 |
||
23 |
!OSErrorHolder class methodsFor:'documentation'! |
|
24 |
||
25 |
copyright |
|
26 |
" |
|
27 |
COPYRIGHT (c) 1997 by eXept Software AG / Claus Gittinger |
|
28 |
All Rights Reserved |
|
29 |
||
30 |
This software is furnished under a license and may be used |
|
31 |
only in accordance with the terms of that license and with the |
|
32 |
inclusion of the above copyright notice. This software may not |
|
33 |
be provided or otherwise made available to, or used by, any |
|
34 |
other person. No title to or ownership of the software is |
|
35 |
hereby transferred. |
|
36 |
" |
|
37 |
||
38 |
||
39 |
! |
|
40 |
||
41 |
documentation |
|
42 |
" |
|
6271 | 43 |
This class represents low level operating system errors. |
44 |
We do not use error numbers, because there may be different errnos |
|
45 |
for the same error on different systems. |
|
6270 | 46 |
|
6271 | 47 |
[instance variables:] |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
48 |
errorSymbol symbol associated with this error |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
49 |
errorCategory symbol defining the error category. |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
50 |
This is in fact a symbol that returns a |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
51 |
Signal when sent to myself. |
6270 | 52 |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
53 |
While the errorSymbol may be different on different platforms, |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
54 |
the errorCategories (which refer to the Signals that will be raised) |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
55 |
are identical. |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
56 |
You can get an OS independent error message for an error by sending |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
57 |
#errorCategoryString. |
6271 | 58 |
|
59 |
[author:] |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
60 |
Stefan Vogel |
6271 | 61 |
|
62 |
[see also:] |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
63 |
OperatingSystem |
6270 | 64 |
" |
65 |
! ! |
|
66 |
||
21058 | 67 |
!OSErrorHolder class methodsFor:'instance creation'! |
68 |
||
69 |
errorSymbol:sym errorCategory:typ |
|
70 |
^ self new errorSymbol:sym errorCategory:typ |
|
71 |
! |
|
72 |
||
73 |
unsupportedOperation |
|
74 |
^ self new errorSymbol:'operation not supported' errorCategory:#unsupportedOperationSignal |
|
75 |
! ! |
|
76 |
||
6294 | 77 |
!OSErrorHolder class methodsFor:'Signal constants'! |
78 |
||
6297 | 79 |
allocRetrySignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
80 |
^ self signals at:#allocRetrySignal |
6297 | 81 |
! |
82 |
||
83 |
badAccessorSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
84 |
^ self signals at:#badAccessorSignal |
6297 | 85 |
! |
86 |
||
87 |
badArgumentsSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
88 |
^ self signals at:#badArgumentsSignal |
6297 | 89 |
! |
90 |
||
9164 | 91 |
classNotRegisteredSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
92 |
^ self signals at:#classNotRegisteredSignal |
9164 | 93 |
! |
94 |
||
95 |
coNotInitializedSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
96 |
^ self signals at:#coNotInitializedSignal |
9164 | 97 |
! |
98 |
||
10751
c3fdb104adba
dont forget the defaultOsErrorSignal
Claus Gittinger <cg@exept.de>
parents:
10388
diff
changeset
|
99 |
defaultOsErrorSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
100 |
^ self signals at:#defaultOsErrorSignal |
10751
c3fdb104adba
dont forget the defaultOsErrorSignal
Claus Gittinger <cg@exept.de>
parents:
10388
diff
changeset
|
101 |
! |
c3fdb104adba
dont forget the defaultOsErrorSignal
Claus Gittinger <cg@exept.de>
parents:
10388
diff
changeset
|
102 |
|
6297 | 103 |
existingReferentSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
104 |
^ self signals at:#existingReferentSignal |
6297 | 105 |
! |
106 |
||
107 |
illegalOperationSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
108 |
^ self signals at:#illegalOperationSignal |
6297 | 109 |
! |
110 |
||
111 |
inaccessibleSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
112 |
^ self signals at:#inaccessibleSignal |
6297 | 113 |
! |
114 |
||
115 |
inappropriateOperationSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
116 |
^ self signals at:#inappropriateOperationSignal |
6297 | 117 |
! |
118 |
||
119 |
inappropriateReferentSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
120 |
^ self signals at:#inappropriateReferentSignal |
6297 | 121 |
! |
122 |
||
6294 | 123 |
invalidArgumentsSignal |
124 |
"return the signal for invalid arguments (e.g. right class, wrong value)." |
|
125 |
||
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
126 |
^ self signals at:#invalidArgumentsSignal |
6297 | 127 |
! |
128 |
||
129 |
needRetrySignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
130 |
^ self signals at:#needRetrySignal |
6297 | 131 |
! |
132 |
||
9164 | 133 |
noAggregationSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
134 |
^ self signals at:#noAggregationSignal |
9164 | 135 |
! |
136 |
||
12954 | 137 |
noAssociationSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
138 |
^ self signals at:#noAssociationSignal |
12954 | 139 |
! |
140 |
||
6297 | 141 |
noDataSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
142 |
^ self signals at:#noDataSignal |
6297 | 143 |
! |
144 |
||
9164 | 145 |
noInterfaceSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
146 |
^ self signals at:#noInterfaceSignal |
9164 | 147 |
! |
148 |
||
6297 | 149 |
noMemorySignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
150 |
^ self signals at:#noMemorySignal |
6297 | 151 |
! |
152 |
||
153 |
noPermissionsSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
154 |
^ self signals at:#noPermissionsSignal |
6297 | 155 |
! |
156 |
||
157 |
noResourcesSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
158 |
^ self signals at:#noResourcesSignal |
6297 | 159 |
! |
160 |
||
9179 | 161 |
noVerbsSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
162 |
^ self signals at:#noVerbsSignal |
9179 | 163 |
! |
164 |
||
6297 | 165 |
nonexistentSignal |
166 |
"return the signal for non existing referents (i.e. device, file etc.)." |
|
167 |
||
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
168 |
^ self signals at:#nonexistentSignal |
6297 | 169 |
! |
170 |
||
171 |
notReadySignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
172 |
^ self signals at:#notReadySignal |
6297 | 173 |
! |
174 |
||
175 |
peerFaultSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
176 |
^ self signals at:#peerFaultSignal |
6297 | 177 |
! |
178 |
||
179 |
rangeErrorSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
180 |
^ self signals at:#rangeErrorSignal |
6297 | 181 |
! |
182 |
||
9179 | 183 |
signalNamed:signalName |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
184 |
^ self signals at:signalName |
9179 | 185 |
! |
186 |
||
19531 | 187 |
signals |
188 |
Signals isNil ifTrue:[ |
|
189 |
self initializeSignals |
|
190 |
]. |
|
191 |
^ Signals |
|
192 |
! |
|
193 |
||
6297 | 194 |
transferFaultSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
195 |
^ self signals at:#transferFaultSignal |
6297 | 196 |
! |
197 |
||
198 |
transientErrorSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
199 |
^ self signals at:#transientErrorSignal |
6297 | 200 |
! |
201 |
||
202 |
unavailableReferentSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
203 |
^ self signals at:#unavailableReferentSignal |
6297 | 204 |
! |
205 |
||
206 |
underSpecifiedSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
207 |
^ self signals at:#underSpecifiedSignal |
6297 | 208 |
! |
209 |
||
9164 | 210 |
unknownNameSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
211 |
^ self signals at:#unknownNameSignal |
9164 | 212 |
! |
213 |
||
6297 | 214 |
unpreparedOperationSignal |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
215 |
^ self signals at:#unpreparedOperationSignal |
6297 | 216 |
! |
217 |
||
218 |
unsupportedOperationSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
219 |
^ self signals at:#unsupportedOperationSignal |
6297 | 220 |
! |
221 |
||
222 |
volumeFullSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
223 |
^ self signals at:#volumeFullSignal |
6297 | 224 |
! |
225 |
||
226 |
wrongSubtypeForOperationSignal |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
227 |
^ self signals at:#wrongSubtypeForOperationSignal |
6294 | 228 |
! ! |
229 |
||
6270 | 230 |
!OSErrorHolder class methodsFor:'accessing'! |
231 |
||
232 |
errorSignal |
|
15191 | 233 |
^ OsError |
6270 | 234 |
|
235 |
"Created: 25.1.1997 / 18:07:55 / cg" |
|
236 |
! ! |
|
237 |
||
6271 | 238 |
!OSErrorHolder class methodsFor:'class initialization'! |
239 |
||
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
240 |
initializeSignals |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
241 |
"init signals etc." |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
242 |
|
12957 | 243 |
|unavailableReferentSignal| |
6271 | 244 |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
245 |
Signals isNil ifTrue:[ |
21048 | 246 |
Signals := Dictionary new:40. |
6271 | 247 |
|
21048 | 248 |
OsNoResourcesError notifierString:'Not enough resources'. |
249 |
Signals at:#noResourcesSignal put:OsNoResourcesError. |
|
6271 | 250 |
|
21048 | 251 |
OsIllegalOperation notifierString:'Illegal Operation'. |
252 |
Signals at:#illegalOperationSignal put:OsIllegalOperation. |
|
6297 | 253 |
|
21048 | 254 |
OsInvalidArgumentsError notifierString:'Invalid Arguments'. |
255 |
Signals at:#invalidArgumentsSignal put:OsInvalidArgumentsError. |
|
6297 | 256 |
|
21048 | 257 |
OsInaccessibleError notifierString:'Referent inaccessible'. |
258 |
Signals at:#inaccessibleSignal put:OsInaccessibleError. |
|
6297 | 259 |
|
21048 | 260 |
OsTransferFaultError notifierString:'Transfer fault'. |
261 |
Signals at:#transferFaultSignal put:OsTransferFaultError. |
|
6297 | 262 |
|
21048 | 263 |
OsNeedRetryError notifierString:'Retry Operation'. |
264 |
Signals at:#needRetrySignal put:OsNeedRetryError. |
|
6271 | 265 |
|
21048 | 266 |
Signals at:#defaultOsErrorSignal put:OsError. |
10751
c3fdb104adba
dont forget the defaultOsErrorSignal
Claus Gittinger <cg@exept.de>
parents:
10388
diff
changeset
|
267 |
|
21048 | 268 |
"/ Information signals |
6271 | 269 |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
270 |
"/ s := self setupSignal:#informationSignal parent:OSErrorSignal |
12957 | 271 |
"/ notifier:'Information'. |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
272 |
"/ self setupSignal:#operationStartedSignal parent:s |
12957 | 273 |
"/ notifier:'Operation started'. |
274 |
||
21048 | 275 |
"/ Retry signals |
6271 | 276 |
|
21048 | 277 |
self setupSignal:#notReadySignal parent:OsNeedRetryError |
278 |
notifier:' -- referent not ready'. |
|
279 |
self setupSignal:#transientErrorSignal parent:OsNeedRetryError |
|
280 |
notifier:' -- transient error'. |
|
281 |
self setupSignal:#allocRetrySignal parent:OsNeedRetryError |
|
282 |
notifier:' -- allocation failure'. |
|
6271 | 283 |
|
21048 | 284 |
"/ Resource signals |
6271 | 285 |
|
21048 | 286 |
self setupSignal:#noMemorySignal parent:OsNoResourcesError |
287 |
notifier:' -- memory'. |
|
6271 | 288 |
|
21048 | 289 |
"/ Transfer faults |
6271 | 290 |
|
21048 | 291 |
self setupSignal:#noDataSignal parent:OsTransferFaultError |
292 |
notifier:'Data unavailable/EOF reached'. |
|
293 |
self setupSignal:#peerFaultSignal parent:OsTransferFaultError |
|
294 |
notifier:'Communication with peer failed'. |
|
295 |
self setupSignal:#volumeFullSignal parent:OsTransferFaultError |
|
296 |
notifier:'Volume full'. |
|
6271 | 297 |
|
21048 | 298 |
"/ Inaccesible faults |
6271 | 299 |
|
21048 | 300 |
self setupSignal:#nonexistentSignal parent:OsInaccessibleError |
301 |
notifier:'File does not exist'. |
|
302 |
unavailableReferentSignal := |
|
303 |
self setupSignal:#unavailableReferentSignal parent:OsInaccessibleError |
|
304 |
notifier:' currently'. |
|
305 |
self setupSignal:#noPermissionsSignal parent:OsInaccessibleError |
|
306 |
notifier:'Permission denied'. |
|
307 |
self setupSignal:#existingReferentSignal parent:OsInaccessibleError |
|
308 |
notifier:' -- already exists or currently in use'. |
|
309 |
self setupSignal:#inappropriateReferentSignal parent:OsInaccessibleError |
|
310 |
notifier:' -- operation inappropriate'. |
|
6271 | 311 |
|
21048 | 312 |
"/ Illegal operations |
6271 | 313 |
|
21048 | 314 |
self setupSignal:#inappropriateOperationSignal parent:OsIllegalOperation |
315 |
notifier:'Inappropriate operation'. |
|
316 |
self setupSignal:#wrongSubtypeForOperationSignal parent:OsIllegalOperation |
|
317 |
notifier:' -- wrong subtype'. |
|
318 |
self setupSignal:#unsupportedOperationSignal parent:OsIllegalOperation |
|
319 |
notifier:' -- on this platform'. |
|
320 |
self setupSignal:#unpreparedOperationSignal parent:OsIllegalOperation |
|
321 |
notifier:' -- wrong sequence'. |
|
6271 | 322 |
|
21048 | 323 |
"/ Illegal arguments |
6271 | 324 |
|
21048 | 325 |
self setupSignal:#badArgumentsSignal parent:OsInvalidArgumentsError |
326 |
notifier:' -- wrong class'. |
|
327 |
self setupSignal:#badAccessorSignal parent:OsInvalidArgumentsError |
|
328 |
notifier:' -- accessor invalid'. |
|
329 |
self setupSignal:#rangeErrorSignal parent:OsInvalidArgumentsError |
|
330 |
notifier:' -- out of range'. |
|
331 |
self setupSignal:#underSpecifiedSignal parent:OsInvalidArgumentsError |
|
332 |
notifier:' -- operation not fully specified'. |
|
9164 | 333 |
|
21048 | 334 |
"/ COM errors |
335 |
self setupSignal:#coNotInitializedSignal parent:OsIllegalOperation |
|
336 |
notifier:'COM not initialized'. |
|
337 |
self setupSignal:#noInterfaceSignal parent:unavailableReferentSignal |
|
338 |
notifier:'No such interface'. |
|
339 |
self setupSignal:#classNotRegisteredSignal parent:unavailableReferentSignal |
|
340 |
notifier:'Class not registered'. |
|
341 |
self setupSignal:#noAggregationSignal parent:OsIllegalOperation |
|
342 |
notifier:'No Aggregation'. |
|
343 |
self setupSignal:#unknownNameSignal parent:unavailableReferentSignal |
|
344 |
notifier:'Unknown member name'. |
|
345 |
self setupSignal:#noVerbsSignal parent:OsIllegalOperation |
|
346 |
notifier:'No verbs for OLE object'. |
|
11031 | 347 |
|
21048 | 348 |
"/ Shell errors |
349 |
self setupSignal:#noAssociationSignal parent:unavailableReferentSignal |
|
350 |
notifier:'No association for file extension'. |
|
6271 | 351 |
]. |
352 |
||
353 |
" |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
354 |
Signals := nil. |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
355 |
self initializeSignals |
6271 | 356 |
" |
6297 | 357 |
! |
358 |
||
359 |
setupSignal:aSymbol parent:parentSignal notifier:aString |
|
360 |
"setup a signal, which can be retrieved by sending aSymbol to self. |
|
361 |
Return the new signal" |
|
362 |
||
363 |
|s| |
|
364 |
||
365 |
Signals at:aSymbol |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
366 |
put:(s := parentSignal newSignal |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
367 |
notifierString:aString; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
368 |
nameClass:self message:aSymbol). |
6297 | 369 |
^ s |
6271 | 370 |
! ! |
371 |
||
6270 | 372 |
!OSErrorHolder methodsFor:'accessing'! |
373 |
||
15463 | 374 |
errorCategory |
375 |
^ errorCategory |
|
376 |
! |
|
377 |
||
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
378 |
errorSymbol |
15463 | 379 |
^ errorSymbol |
380 |
! |
|
381 |
||
6280 | 382 |
errorSymbol:sym errorCategory:typ |
6270 | 383 |
errorSymbol := sym. |
21058 | 384 |
errorCategory := typ ? #defaultOsErrorSignal. |
10388 | 385 |
! |
386 |
||
387 |
parameter |
|
388 |
^ parameter |
|
389 |
! |
|
390 |
||
391 |
parameter:something |
|
392 |
parameter := something. |
|
6270 | 393 |
! ! |
394 |
||
6294 | 395 |
!OSErrorHolder methodsFor:'error reporting'! |
396 |
||
397 |
reportError |
|
398 |
"Report an error." |
|
399 |
"Delegate to the receiver's error reporter." |
|
400 |
||
9179 | 401 |
|signal| |
402 |
||
403 |
signal := self class signalNamed:errorCategory. |
|
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
404 |
signal |
21048 | 405 |
raiseWith:self |
406 |
errorString:(parameter isNil ifTrue:[nil] ifFalse:[' - ', parameter printString]) |
|
407 |
in:(thisContext "sender"). |
|
408 |
||
409 |
" |
|
410 |
(OperatingSystem errorHolderForNumber:22) reportError |
|
411 |
" |
|
412 |
! |
|
413 |
||
414 |
reportError:errorMessage |
|
415 |
"Report an error. Show insert errorMessage into error string." |
|
416 |
"Delegate to the receiver's error reporter." |
|
417 |
||
21061 | 418 |
|signal| |
9179 | 419 |
|
21048 | 420 |
signal := self class signalNamed:errorCategory. |
421 |
signal |
|
422 |
raiseWith:self |
|
21061 | 423 |
errorString:(self makeErrorStringFor:errorMessage) |
21048 | 424 |
in:(thisContext "sender"). |
19531 | 425 |
! |
426 |
||
427 |
reportProceedableError |
|
428 |
"Report an error." |
|
429 |
"Delegate to the receiver's error reporter." |
|
430 |
||
431 |
|signal| |
|
432 |
||
433 |
signal := self class signalNamed:errorCategory. |
|
434 |
signal |
|
435 |
raiseRequestWith:self |
|
436 |
errorString:(parameter isNil ifTrue:[nil] ifFalse:[' - ', parameter printString]) |
|
437 |
in:(thisContext "sender"). |
|
438 |
||
439 |
"/ ^ self errorReporter reportOn:self |
|
21061 | 440 |
! |
441 |
||
442 |
reportProceedableError:errorMessage |
|
443 |
"Report an error. Show insert errorMessage into error string." |
|
444 |
"Delegate to the receiver's error reporter." |
|
445 |
||
446 |
|signal| |
|
447 |
||
448 |
signal := self class signalNamed:errorCategory. |
|
449 |
signal |
|
450 |
raiseRequestWith:self |
|
451 |
errorString:(self makeErrorStringFor:errorMessage) |
|
452 |
in:(thisContext "sender"). |
|
6294 | 453 |
! ! |
454 |
||
6271 | 455 |
!OSErrorHolder methodsFor:'others'! |
456 |
||
21048 | 457 |
description |
10388 | 458 |
|s| |
459 |
||
21048 | 460 |
s := self errorString. |
10388 | 461 |
parameter notNil ifTrue:[ |
21048 | 462 |
^ s,': ',parameter printString. |
10388 | 463 |
]. |
464 |
^ s |
|
465 |
||
466 |
"Modified: / 12-02-2007 / 12:29:07 / cg" |
|
21048 | 467 |
! |
468 |
||
469 |
errorString |
|
470 |
^ OperatingSystem errorStringForSymbol:errorSymbol. |
|
15463 | 471 |
! ! |
472 |
||
473 |
!OSErrorHolder methodsFor:'printing'! |
|
6270 | 474 |
|
15463 | 475 |
printOn:aStream |
18355
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
476 |
aStream |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
477 |
nextPutAll:self className; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
478 |
nextPut:$(; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
479 |
nextPutAll:errorSymbol; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
480 |
nextPutAll:', '; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
481 |
nextPutAll:errorCategory; |
a584e6b0919f
lazy initialization of signals
Claus Gittinger <cg@exept.de>
parents:
17464
diff
changeset
|
482 |
nextPut:$). |
6270 | 483 |
! ! |
6271 | 484 |
|
21061 | 485 |
!OSErrorHolder methodsFor:'private'! |
486 |
||
487 |
makeErrorStringFor:aString |
|
488 |
"Private: compute an errorString from myself and aString" |
|
489 |
||
490 |
|errorString| |
|
491 |
||
492 |
errorString := aString ? ''. |
|
493 |
parameter notNil ifTrue:[ |
|
494 |
errorString notEmpty ifTrue:[ |
|
495 |
errorString := errorString, ': '. |
|
496 |
]. |
|
497 |
errorString := errorString, parameter printString. |
|
498 |
]. |
|
499 |
errorString notEmptyOrNil ifTrue:[ |
|
500 |
errorString := ' - ', errorString. |
|
501 |
] ifFalse:[ |
|
502 |
errorString := nil. |
|
503 |
]. |
|
504 |
||
505 |
^ errorString. |
|
506 |
! ! |
|
507 |
||
21070 | 508 |
!OSErrorHolder methodsFor:'testing'! |
509 |
||
510 |
isOSErrorHolder |
|
511 |
^ true |
|
512 |
! ! |
|
513 |
||
7593 | 514 |
!OSErrorHolder class methodsFor:'documentation'! |
515 |
||
516 |
version |
|
19531 | 517 |
^ '$Header$' |
12155 | 518 |
! |
519 |
||
520 |
version_CVS |
|
19531 | 521 |
^ '$Header$' |
7593 | 522 |
! ! |
523 |