Bonjour,
je débute en java et j'ai un problème pour "catcher" une exception :
J'ai un programme qui lance une thread pour traiter une tache de fond : charger des données xml. Quand cette tâche est finie, on envoie un message à un handler pour qu'il parse ces données xml. Lorsqu'il y a une erreur de parse du xml, je lève une exception et je fais throw en espérant arriver à récupérer cette exception dans la thread principale mais je n'y arrive pas.
Quelqu'un aurait-il une solution ou une explication sur la gestion d'une exception en multi-thread ?
Voici mon code :
Merci pour vos idées
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70..... public class MyClass { private DownloadXML DwXml; static final String myfile = "monfichier.xml"; private Handler handler = new Handler(){ public void handleMessage(Message msg) { Log.i("handler","handlemessage"); FileInputStream fin; mydevitems=null; XStream xstream = new XStream(new DomDriver()); xstream.alias("data", DevItems.class); xstream.alias("point",DevEntry.class); xstream.addImplicitCollection(DevItems.class, "entries"); //puis parser les données try { fin = myctx.openFileInput(myfile); mydevitems = (DevItems) xstream.fromXML(fin); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (StreamException e1) { //erreur de parsage du fichier, on l'efface et on quitte ?? throw(StreamException)e1; } } }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //charger le fichier loadTaux(); } private class LoadingThread extends Thread { private DownloadXML myDwXml; public LoadingThread(DownloadXML _dwxml){ myDwXml = _dwxml; } public void run() { myDwXml.readXmlFromUrl(); } } //chargement du fichier des taux de change public void loadTaux() { LoadingThread process = new LoadingThread(DwXml); process.start(); } Public void newMsg(String message) { // TODO Auto-generated method stub try { handler.sendEmptyMessage(0); } catch(StreamException e1) { //something to do } } }

 

 
		
		 
         
 

 
			
			


 
			

 gérer une exception envoyée par un handler de thread
 gérer une exception envoyée par un handler de thread
				 Répondre avec citation
  Répondre avec citation


 
			 
   
 


 Envoyé par wax78
 Envoyé par wax78
					
 
						
Partager