2010-06-16 4 views
0

Dans Asp.net (C#), je ne suis pas en mesure d'attraper l'exception (FileNotFoundException) correctement ... je ne sais pas la raison..En fait Fichier s pas là..Mais l'instruction catch ne parvient pas à attraper l'exception. . voici le code ..Dans Asp.net je ne peux pas attraper correctement une exception?

try 
{ 
System.Drawing.Image imgg1 = System.Drawing.Image.FromFile(Server.MapPath("").ToString() + "\\images\\img1.jpg"); 
} 
catch (FileNotFoundException) 
{ 
    Response.Write("<script>alert('Please Select and upload Student's Photo');</script>"); 
} 
+3

Qu'est-ce qui vous rend sûr qu'une exception FileNotFoundException est levée? Ajoutez un 'catch (Exception ex) {Response.Write ("

"+ex.ToString()+"
");}' pour voir quelle exception est levée. –

+0

il y aura une erreur dans javascript votre fermeture vous message sur l'étudiant le reste fera juste une erreur apparaître sur la page, remplacez le javascript pour alerte ('S'il vous plaît sélectionner et télécharger Student \' s Photo '); –

+0

Anand pouvez-vous nous dire exactement ce qui l'a fait fonctionner? Je ne suis pas sûr de ce que le changement a fait fonctionner le code. –

Répondre

3

Etes-vous sûr que tha Est-ce l'exception que vous obtenez?

Vous devez essayer de remplacer l'exception FileNotFoundException par Exception et vérifier quelle exception est tracée.

EDIT: Q1: Dans le mode débogage, le code est-il réellement entré dans la session catch?

Pourriez-vous reconstruire (Ctrl + Maj + B dans Visual Studio) ce code?

Votre en train d'écrire un code qui échouera il y a une citation se termine ici:

alert('Please Select and upload Student's Photo'); 

Voir dans le surligneur SINTAX remplacer pour cette

alert('Please Select and upload Student\'s Photo'); 
+0

merci beaucoup ... son fonctionnement ... – Anand

+1

+1 Bonne prise sur la citation. –

+0

Pas Hunter, j'ai vu ça sur @ josephj1989 répondre, et après l'avoir voté pour avoir remarqué que j'ai édité ma réponse pour contenir aussi cette partie de la solution. Désolé de vous décevoir, mais je vous ai également voté par la suite –

6

vous pouvez savoir quel type est d'être jeté

try 
{ 
System.Drawing.Image imgg1 = System.Drawing.Image.FromFile(Server.MapPath("").ToString() + "\\images\\img1.jpg"); 
} 
catch (FileNotFoundException) 
{ 
Response.Write("<script>alert('Please Select and upload Student's Photo');</script>"); 
    } 
catch(Exception ex) 
{ 
    Response.Write("Ex: " + ex.GetType().ToString()); 
} 
+0

FileNotFoundException est levée .. – Anand

+0

mais est-ce qu'il est correctement saisi dans le code fourni? –

+0

Non .. c'est le problème ... – Anand

1

l'exception levée est pas de type FileNotFoundException, essayez la capture au lieu d'exception et voir si cela fonctionne

+0

cela aussi ne fonctionne pas ?? !! – Anand

+0

merci beaucoup ... son fonctionnement ... – Anand

1

Essayez pas à pas dans votre code dans la débogueur et voir si l'exception n'est vraiment pas interceptée. Il peut également aider à inclure une variable spécifique pour tenir votre FileNotFoundException, et d'inclure une prise de secours d'une exception générale, comme suit:

try 
{ 
    System.Drawing.Image imgg1 = System.Drawing.Image.FromFile(Server.MapPath("").ToString() + "\\images\\img1.jpg"); 
} 
catch (FileNotFoundException fnfe) 
{ 
    Response.Write("<script>alert('Please Select and upload Student's Photo');</script>"); 
} 
catch (Exception ex) 
{ 
    // do something with the exception 
} 
+0

section de capture ne fonctionne pas? – Anand

+0

@Anard: Si catch ne fonctionne pas du tout, pourquoi avez-vous dit à Glennular que la sortie était FileNotFoundException? Etes-vous sûr que c'est raté et pas response.write? – diadem

+0

merci beaucoup ... son fonctionnement ... – Anand

2

Vérifiez si elle existe au lieu de rattraper cette exception.

string path = Server.MapPath("~/images/img1.jpg"); 
if (System.IO.File.Exists(path)) 
{ 
    System.Drawing.Image imgg1 = System.Drawing.Image.FromFile(path); 
} 
else 
{ 
    Page.ClientScript.RegisterStartupScript(Page.GetType(), "notfound", "alert(\"Please Select and upload Student's Photo\");", true); 
} 

Vous échappez aussi votre message javascript trop tôt

'Please Select and upload Student's Photo' 
+0

merci beaucoup ... son fonctionnement ... – Anand

0

Votre exception est levée, mais vous ne voyez pas votre alerte parce que vous n'êtes pas écrit sur JavaScript. Essayez ceci:

try 
{ 
    System.Drawing.Image imgg1 = System.Drawing.Image.FromFile(Server.MapPath("").ToString() + @"\images\img1.jpg"); 
} 
catch (FileNotFoundException) 
{ 
    Page.RegisterClientScriptBlock("myScript", "<script language=javascript>alert('Please Select and upload Student's Photo');</script"); 
} 
+0

LoL, si c'est tout. Anand aurait dû nous dire que l'exception était interceptée, mais rien ne s'afficherait sur l'écran après l'exécution du code. –

+0

Exception n'a pas été capturé !!! – Anand

+0

J'ai couru son code .. et c'est ce qui est arrivé. En fait, "alerte ('Veuillez sélectionner et télécharger la photo de l'étudiant');" s'affiche en HTML sur l'écran..peut-être qu'il ne l'a pas remarqué parce qu'il s'attendait à une fenêtre contextuelle. –

1

Si (dans l'exemple d'origine) que vous essayez d'écrire un javascript alerte vers la page que vous devez entourer votre alert() avec <script></script> tags. Mais pourquoi utilisez-vous des blocs try-catch comme ça quand vous pouvez utiliser System.IO.File.Exists (chemin), et une étiquette d'erreur?

using System.IO; 
using System.Drawing; 
... 

String filePath = Server.MapPath("").ToString() + "\images\img1.jpg"; 
if(File.Exists(filePath)) 
{ 
    Image imgg1 = Image.FromFile(filePath); 
} 
else 
{ 
    lblError.Text = "Please upload a picture for this student"; 
    lblError.Visible = true; 
} 
3

Votre javascript texte cité n'est pas équilibré essayer

alert('please upload student\'s photo'); 
1

Le problème est pas lié au bloc catch. C'est la façon dont vous utilisez C# pour créer le JavaScript. Response.Write empile la sortie avant le rendu de la page. Donc, il ne sera pas reconnu par le navigateur. Faites ceci à la place.

catch (FileNotFoundException) 
{ 
    String csname1 = "Popup"; 

    if (!IsClientScriptBlockRegistered(csname1)) 
    { 
     String cstext1 = "<script type=\"text/javascript\">" + "alert('Please Select and upload Student\\'s Photo');</" + "script>"; 
     RegisterStartupScript(csname1, cstext1); 
    } 
} 

Si vous ne me croyez toujours pas, faites-le simplement pour vous le prouver.

catch(FileNotFoundException) 
{ 
    Response.Write("its working") 
} 

Et ne regardez pas seulement à la page rendu qui va dépendre navigateur, faites un clic droit et voir la source afin que vous puissiez voir ce qui se passe réellement.

Questions connexes