Announcement

Collapse
No announcement yet.

try/catch wird ignoriert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • try/catch wird ignoriert

    Hallo,

    warum wird hier der letzte Teil im Code (try/catch) ignoriert.
    wo habe ich den logischen Fehler.

    Vielen Dank und Gruß
    Mssmar

    HTML Code:
    <%--ex3.jsp, Überprufen der Eingabe--%> 
    <%@page import="java.util.regex.*"%> 
    <% 
    String name = ""; 
    String alter = ""; 
    String antwort = ""; 
    String mail = ""; 
    String regexp = "."; 
    String msg = ""; 
    int a; 
    
    boolean flag = true;
    
    
    if (request.getParameter("submit") != null){
    
    	   name = request.getParameter("tName").trim();
    	   alter = request.getParameter("tAlter").trim();
    	   mail = request.getParameter("tMail").trim();
    	   
    	    
    	  if (name.equals("")) {
    	  
    	    msg = "Es wurde kein Name eingegeben.";
    	    
    	  }else if(alter.equals("")){
    	   alter = request.getParameter("tAlter").trim();
    	  
    	    msg = " Bitte Alter eingeben.";
    		
    	  }else if (mail.equals ("")) {
    		    msg = "Es wurde keine eMail-Adresse eingegeben.";
    			
    		}else if(mail !=""){ 
    		    regexp = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"; 
    		    Pattern p = Pattern.compile( regexp ); 
    		    Matcher m = p.matcher( mail ); 
    		    boolean result = m.matches(); 
    		    if ( !result )msg = msg + " Die eMail-Adresse ist ungültig.";
    		}else if(alter != ""){
    		   try{ 
    		      a = Integer.parseInt(alter); 
    		    } 
    		    catch (NumberFormatException ex){ 
    		      msg = " Die Altereingabe ist fehlerhaft."; 
    			  out.println(ex.toString());
    		    }
    	  }
    } 
      
      //if (msg.equals("")){   
        //antwort = "Ihr Name ist " + name + ", Sie sind " + a + " Jahre alt, die eMail ist " + mail + "." ; 
      //}  
    %> 
    
    <html> 
    <head> 
      <title>ex3.jsp</title> 
    </head> 
    <body bgcolor="#33CCCC"> 
    Formularauswertung mit &Uuml;berpr&uuml;fung der Benutzereingaben. 
    <form name="form1" method="get"> 
      <table width="100%"  border="0" cellspacing="0" cellpadding="0"> 
        <tr> 
          <td width="13%"><div align="right">Name: </div></td> 
          <td width="87%"><input name="tName" type="text" value="<%= name%>" size="35"></td> 
        </tr> 
        <tr> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
        </tr> 
        <tr> 
          <td><div align="right">Alter: </div></td> 
          <td><input name="tAlter" type="text" value="<%= alter%>" size="35"></td> 
        </tr> 
        <tr> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
        </tr> 
        <tr> 
          <td><div align="right">eMail: </div></td> 
          <td><input name="tMail" type="text" value="<%= mail%>" size="35"></td> 
        </tr> 
        <tr> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
        </tr> 
        <tr> 
          <td>&nbsp;</td> 
          <td><input type="submit" name="submit" value="Abschicken"></td> 
        </tr> 
      </table> 
      <p><%= antwort%></p> 
    </form> 
    <p> <%= msg%></p> 
    </body> 
    </html>
    

  • #2
    Hallo Mssmar,

    warum kommst Du auf die Idee, daß die Exceptionbehandlung ignoriert wird?

    lg Dietmar

    Comment


    • #3
      Statt alter != "" oder mail != "" würde ich zudem
      Code:
      !"".equals(alter)
      schreiben. Das andere kann schiefgehen.

      Comment


      • #4
        Originally posted by Dietmar Müller View Post

        warum kommst Du auf die Idee, daß die Exceptionbehandlung ignoriert wird?
        Hallo Dietmar,

        ok du hast Recht. es wird nicht ignoriert, aber was ist hier z.B. mit den letzten zwei If-Statments. Die werden gar nicht ausgeführt.

        Das Problem ist, dass ich keine Fehlermeldung bekomme, um den Fehler lokalisieren zu können.


        Danke und Gruß
        Messmar

        HTML Code:
        <%@page import="java.util.regex.*"%> 
        <% 
        String name = ""; 
        String alter = ""; 
        String antwort = ""; 
        String mail = ""; 
        String regexp = "."; 
        String msg = ""; 
        int a = 0; 
        
        
        if (request.getParameter("submit") != null){
        
        	   name = request.getParameter("tName").trim();
        	   alter = request.getParameter("tAlter").trim();
        	   mail = request.getParameter("tMail").trim();
        	   
        	    
        	  if (name.equals("")) {
        	  
        	    msg = "Es wurde kein Name eingegeben.";
        	    
        	  }else if(alter.equals("")){
        	   alter = request.getParameter("tAlter").trim();
        	  
        	    msg = " Bitte Alter eingeben.";
        		
        	  }else if(alter != ""){
        		
        		   try{ 
        		      a = Integer.parseInt(alter); 
        		    } 
        		    catch (NumberFormatException ex){ 
        		      msg = " Die Altereingabe ist fehlerhaft."; 
        			  out.println(ex.toString());
        		    }
        	  }else if (mail.equals ("")) {
        		    msg = "Es wurde keine eMail-Adresse eingegeben.";
        			
        		}else if(mail !=""){ 
        		    regexp = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"; 
        		    Pattern p = Pattern.compile( regexp ); 
        		    Matcher m = p.matcher( mail ); 
        		    boolean result = m.matches(); 
        		    if ( !result )msg = " Die eMail-Adresse ist ungültig.";
        		}
        } 
          
          //if (msg.equals("")){   
            //antwort = "Ihr Name ist " + name + ", Sie sind " + a + " Jahre alt, die eMail ist " + mail + "." ; 
          //}  
        %>

        Comment


        • #5
          Hallo Mssmar,

          das letzte IF wird nicht angesprungen, da auskommentiert!

          So jetzt aber ernst:

          Du hast eine Abfolge von if --> else if --> else if --> else if

          das bedeutet, daß der Code in immer nur in ein if rennt!
          Bei deinem Beispiel heiß das, wenn alle Daten mitgeliefert werden. Die ersten beiden if werden nicht benötigt, da die Daten da sind und dann kommt ein if welches die Bedingung erfüllt --> das Alter wird geparst und dann ist's aus, da nur mehr else if folgen und das else gar nicht mehr angewandt wird, da schon im If.

          Hab ichs verständlich erklärt?

          Lösung: die else if durch eine passende if Schachtelung ersetzen!

          lg Dietmar

          Comment


          • #6
            Originally posted by Dietmar Müller View Post
            Hab ichs verständlich erklärt?
            Lösung: die else if durch eine passende if Schachtelung ersetzen!
            Hallo Dietmar,

            vielen vielen Dank für die ausführliche Erklärung.
            die Lösung mit nur If-Statment war/ist richtig.

            Ich weiße es nicht, wie ich es übersehen habe. Das ist ja ein Anfängerfehler.

            Ich muss zugeben, dass ich kein Java Experte bin, aber die Sache war/ist eigentlich nicht so schwer.

            Nochmal Danke vielmals und Gruß
            Messmar

            Comment

            Working...
            X