@@ -307,6 +307,11 @@ public void onCancel() {
307
307
Log .d (LOG_TAG , "Request got cancelled" );
308
308
}
309
309
310
+ public void onUserException (Throwable error ) {
311
+ Log .e (LOG_TAG , "User-space exception detected!" , error );
312
+ throw new RuntimeException (error );
313
+ }
314
+
310
315
@ Override
311
316
final public void sendProgressMessage (int bytesWritten , int bytesTotal ) {
312
317
sendMessage (obtainMessage (PROGRESS_MESSAGE , new Object []{bytesWritten , bytesTotal }));
@@ -346,52 +351,56 @@ final public void sendCancelMessage() {
346
351
protected void handleMessage (Message message ) {
347
352
Object [] response ;
348
353
349
- switch (message .what ) {
350
- case SUCCESS_MESSAGE :
351
- response = (Object []) message .obj ;
352
- if (response != null && response .length >= 3 ) {
353
- onSuccess ((Integer ) response [0 ], (Header []) response [1 ], (byte []) response [2 ]);
354
- } else {
355
- Log .e (LOG_TAG , "SUCCESS_MESSAGE didn't got enough params" );
356
- }
357
- break ;
358
- case FAILURE_MESSAGE :
359
- response = (Object []) message .obj ;
360
- if (response != null && response .length >= 4 ) {
361
- onFailure ((Integer ) response [0 ], (Header []) response [1 ], (byte []) response [2 ], (Throwable ) response [3 ]);
362
- } else {
363
- Log .e (LOG_TAG , "FAILURE_MESSAGE didn't got enough params" );
364
- }
365
- break ;
366
- case START_MESSAGE :
367
- onStart ();
368
- break ;
369
- case FINISH_MESSAGE :
370
- onFinish ();
371
- break ;
372
- case PROGRESS_MESSAGE :
373
- response = (Object []) message .obj ;
374
- if (response != null && response .length >= 2 ) {
375
- try {
376
- onProgress ((Integer ) response [0 ], (Integer ) response [1 ]);
377
- } catch (Throwable t ) {
378
- Log .e (LOG_TAG , "custom onProgress contains an error" , t );
354
+ try {
355
+ switch (message .what ) {
356
+ case SUCCESS_MESSAGE :
357
+ response = (Object []) message .obj ;
358
+ if (response != null && response .length >= 3 ) {
359
+ onSuccess ((Integer ) response [0 ], (Header []) response [1 ], (byte []) response [2 ]);
360
+ } else {
361
+ Log .e (LOG_TAG , "SUCCESS_MESSAGE didn't got enough params" );
379
362
}
380
- } else {
381
- Log .e (LOG_TAG , "PROGRESS_MESSAGE didn't got enough params" );
382
- }
383
- break ;
384
- case RETRY_MESSAGE :
385
- response = (Object []) message .obj ;
386
- if (response != null && response .length == 1 ) {
387
- onRetry ((Integer ) response [0 ]);
388
- } else {
389
- Log .e (LOG_TAG , "RETRY_MESSAGE didn't get enough params" );
390
- }
391
- break ;
392
- case CANCEL_MESSAGE :
393
- onCancel ();
394
- break ;
363
+ break ;
364
+ case FAILURE_MESSAGE :
365
+ response = (Object []) message .obj ;
366
+ if (response != null && response .length >= 4 ) {
367
+ onFailure ((Integer ) response [0 ], (Header []) response [1 ], (byte []) response [2 ], (Throwable ) response [3 ]);
368
+ } else {
369
+ Log .e (LOG_TAG , "FAILURE_MESSAGE didn't got enough params" );
370
+ }
371
+ break ;
372
+ case START_MESSAGE :
373
+ onStart ();
374
+ break ;
375
+ case FINISH_MESSAGE :
376
+ onFinish ();
377
+ break ;
378
+ case PROGRESS_MESSAGE :
379
+ response = (Object []) message .obj ;
380
+ if (response != null && response .length >= 2 ) {
381
+ try {
382
+ onProgress ((Integer ) response [0 ], (Integer ) response [1 ]);
383
+ } catch (Throwable t ) {
384
+ Log .e (LOG_TAG , "custom onProgress contains an error" , t );
385
+ }
386
+ } else {
387
+ Log .e (LOG_TAG , "PROGRESS_MESSAGE didn't got enough params" );
388
+ }
389
+ break ;
390
+ case RETRY_MESSAGE :
391
+ response = (Object []) message .obj ;
392
+ if (response != null && response .length == 1 ) {
393
+ onRetry ((Integer ) response [0 ]);
394
+ } else {
395
+ Log .e (LOG_TAG , "RETRY_MESSAGE didn't get enough params" );
396
+ }
397
+ break ;
398
+ case CANCEL_MESSAGE :
399
+ onCancel ();
400
+ break ;
401
+ }
402
+ } catch (Throwable error ) {
403
+ onUserException (error );
395
404
}
396
405
}
397
406
0 commit comments