Fehlerquelle wird nicht angezeigt

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Mad Andy.

    Fehlerquelle wird nicht angezeigt

    Hallo,

    habe mal wieder ein Problem mit VB.Net 2005 EE.

    Habe mir eine Klasse geschrieben um Befehle und Dateien an einen FTP Server zu schicken und abzuholen. Sobald ein Fehler in der Klasse auftritt kommt folgender Fehler : "Ein Aufrufziel hat einen Außnahmefehler verursacht"
    Diese Fehler kommt immer, egal ob es sich um einen Integerüberlauf oder einen anderen Fehler handelt und dass schlimmste ist, dass mir nie die Zeile in der Klasse angezeigt wird wo der Fehler kam, d.h. ich muss mich mit Haltepunkten immer zur Fehlerquelle vorarbeiten und das kostet extrem viel Zeit und nerven.

    Ich hoffe, ihr könnt mir weiterhelfen... :)
    Hi,

    und wo liegt nun das Problem ???

    Möchtest Du wissen, wie man die Zeile findet, die den Fehler verursacht ???
    Möchtest Du wissen, was das für ein Fehler ist ???
    Sollen wir Dir sagen, was für Fehler in Deiner Klasse ist ???
    Oder sogar nen kompletten Quellcode liefern ???

    Wie sollen wir Dir helfen, wenn wir rein gar nichts über Deine Klasse wissen ???

    Du bist doch schon lange genug hier im Forum, dass Du wissen solltest, dass wir hier nicht raten wollen wo DEIN Problem liegt.

    Also: Quelltext, detaillierte Fehlermeldung, usw.


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Ja ich weiß, war in Eile.

    Hier der wichtige Code der Klasse:

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.IO
    3. Imports System.Text
    4. Public Class clsFTP
    5. Dim URL, Username, Password As String
    6. Public Function Login(ByVal _Username As String, ByVal _Password As String, ByVal _URL As String) As Boolean
    7. Username = _Username : Password = _Password : URL = _URL
    8. Try
    9. FTPCommand("", "LIST")
    10. Catch
    11. Return False
    12. End Try
    13. Return True
    14. End Function
    15. Public Function FTPCommand(ByVal SubUrl As String, ByVal Command As String) As String
    16. Dim Uri As String = URL & "/" & SubUrl
    17. Dim ftp As System.Net.FtpWebRequest = FtpWebRequest.Create(Uri)
    18. ftp.Credentials = New System.Net.NetworkCredential(Username, Password)
    19. ftp.KeepAlive = False
    20. ftp.UseBinary = False
    21. ftp.Method = Command
    22. Dim Buffer(8000) As Byte
    23. Using response As System.Net.FtpWebResponse = ftp.GetResponse
    24. System.Threading.Thread.Sleep(100)
    25. Using responseStream As IO.Stream = response.GetResponseStream
    26. System.Threading.Thread.Sleep(100)
    27. responseStream.Read(Buffer, 0, 8000)
    28. End Using
    29. End Using
    30. Dim i As Integer = 0
    31. For Each n As Byte In Buffer
    32. If n = 0 Then Array.Resize(Buffer, i) : Exit For
    33. i += 1
    34. Next
    35. If Buffer.Length > 7999 Then MsgBox("Zu wenig Speicher in Funktion FTPCommand.")
    36. Dim returnValue As String = System.Text.Encoding.UTF7.GetString(Buffer)
    37. Return returnValue
    38. End Function



    Und ich will eben wissen, wo der Fehler auftritt, was ja nicht der Fall ist. In der Fehlermeldung steht nur "Ein Aufrufziel hat einen Ausnahmefehler verursacht."
    Sonst nichts. Ich hoffe, ich habe euch jetzt genügend Informationen gegeben. :rolleyes:

    Edit by Agent: VB-Tag hinzugefügt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    Hi,

    ich bin nicht der .Net Spezi also bitte nicht schlagen wenn das jetzt völliger Quatsch ist. ;)

    Problem 1:
    in der Funktion "FTPCommand" deklarierst Du die Variablen mitten in der Routine. Gehören die nicht an den Anfang der Funktion ??? Oder lässt .Net das sogar zu ??? Auf jeden Fall wird der Quellcode dadurch sehr unübersichtlich !!!

    Problem 2:
    Tritt der Fehler immer auf ?? Kommt eine andere Fehlermeldung wenn Du "FTPCommand" mit und ohne suburl aufrufst ???
    Auf jedenfall endet "uri" mit "/" wenn keine suburl angegeben ist, und ohne "/" wenn eine suburl angegeben ist. Es könnte aber auch sein, das .Net das egal ist, wie dir "uri" übergeben wird.

    Problem 3:
    In der Routine "Login" ist eine Try Schleife und ein Catch Befehl. Wenn ich auf meinem Blitzstreifzug durchs Web, jetzt nicht völlig falsche Infos bekommen habe, ist das eine Art Fehlerbehandlung. Richtig ???
    Ich denke auch das Catch die Try Schleife beendet wenn ein Fehler auftritt, was den Befehl "Return False" völlig überflüssig macht. (Also Catch nach Return False)

    Bitte berichtigt mich wenn das, so nicht stimmt. Ich bin eben kein .Net Profi.


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Hi!

    @ LaMa5:
    Ich verstehe dein Aggressives verhalten nicht!
    Seine Frage war eigentlich, obs einen bestimmten Grund hat, dass er keine genauen Fehlerinformationen bekommt ...

    Und das Try / Catch ist so ziehmlich das gleiche wie in C++, wenn du damit mehr anfangen kannst ;)

    Und warum sollte er die Variablen am Anfang deklerieren müssen? Ich kenne / kann keine Programmiersprache, wo das nötig ist - grad, dass man in .net die Variablen ÜBERHAUPT deklerieren muss...

    Also:
    Mir is sowas auch schon aufgefallen und ich hab kA, warum der nicht in die Klasse "springt".
    Aber ein Tipp für dich: Wenn dein Code / Programm veröffentlicht werden soll, solltest du sowieso eine Fehlerbehandlung einbauen.
    Bei dem Try / Catch kannst du ja genauere infos auf den Fehler ausgeben ;)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mad Andy“ ()

    Hi,

    @MadAndy
    @ LaMa5:
    Ich verstehe dein Aggressives verhalten nicht!


    Wo bitte schön ist das denn aggressives Verhalten ??? Ich habe nur nachgefragt was er eigentlich möchte ???

    Seine Frage war eigentlich, obs einen bestimmten Grund hat, dass er keine genauen Fehlerinformationen bekommt ...


    Und genau diese Frage lese ich dort oben nicht. OK ich könnte jetzt natürlich raten, was er will, aber ...
    Mit dem später geposteten Quelltext, kann man doch schon mal was anfangen (zumindest die die sich mit .Net auskennen ;) ).

    Und warum sollte er die Variablen am Anfang deklerieren müssen? Ich kenne / kann keine Programmiersprache, wo das nötig ist - grad, dass man in .net die Variablen ÜBERHAUPT deklerieren muss...


    1.) wegen der Übersichtlichkeit sollte man alle Variablen am Anfang des Moduls/Function/Sub deklarieren.
    2.) gibt es in VB6 die Option "Option Explicit" die Dich dazu zwingt alle Variablen zu deklarieren.
    3.) selbst wenn es in .Net nicht unbedingt notwendig ist, sollten Variablen deklariert werden, weil es sonst der Datentyp Variant ist, der unnötig viel Arbeitsspeicher frisst
    4.) habe ich bereits erwähnt, dass ich .Net nicht kenne und nur versuche logisch zu denken.


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Hi

    @ LaMa5:

    LaMa5 schrieb:

    Oder sogar nen kompletten Quellcode liefern ???

    Das kommt schon ziehmlich aggressiv rüber, wenn du mich fragst

    Mit ein wenig Fantasie bekommt man die Frage eindeutig raus, besonders, wenn er eben keinen Quellcode gepostet hat.

    Im Bezug auf die Dekleration hab ich was von "am anfang derklerieren MUSS" gelesen...

    Das es Option Explicit gibt, weiß ich selber Oo
    Bei .net ist dies Standardmäßig AN und wird kaum abgeschalten.
    Somit ist es in .net (ohne Änderungen) notwendig die Vars du deklerieren...


    Wir sollten dieses Topic aber nicht zum Streiten missbrauchen ;)
    Hi,

    @Mad Andy
    Im Bezug auf die Dekleration hab ich was von "am anfang derklerieren MUSS" gelesen...

    wenn Du schon meine Aussagen zitieren willst dann bitte richtig!!!
    ich habe niemals irgendwo geschrieben, das Variablen am Anfang deklariert werden MÜSSEN!!!

    Das es Option Explicit gibt, weiß ich selber Oo

    Das ist schön das DU das weisst. Es gibt aber auch noch den ein oder anderen Benutzer, dem diese Info ja vielleicht weiterhilft.

    Bei .net ist dies Standardmäßig AN und wird kaum abgeschalten.
    Somit ist es in .net (ohne Änderungen) notwendig die Vars du deklerieren...

    Mit dieser Aussage stellst Du Deine eigene Aussage von heute morgen in Frage:
    <Zitat von MadAndy:>
    "Und warum sollte er die Variablen am Anfang deklerieren müssen? Ich kenne / kann keine Programmiersprache, wo das nötig ist - grad, dass man in .net die Variablen ÜBERHAUPT deklerieren muss... " <Zitat Ende>

    Welche von den beiden Aussagen ist denn jetzt richtig ???

    Wir sollten dieses Topic aber nicht zum Streiten missbrauchen

    Wer streitet denn hier ??? Der einzige der sich hier "ange#####" fühlt bist doch DU. Und bist Du es nicht, der die Aussagen von anderen WORTGENAU zerpflückt und immer einen Kommentar abgeben muss ???

    Die einzige wirklich sinnvolle Aussage von Dir, die ich sogar mit meiner "Cola-Du" herauslese: "ZURÜCK ZUM THEMA" !!!!!

    Ich hoffe die Diskussion ist damit beendet!!


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Ich hoffe die Diskussion ist damit beendet!!

    Leider nicht...

    Gehören die nicht an den Anfang der Funktion ??? Oder lässt .Net das sogar zu ???

    Das steht diesmal GENAUSO da
    Wahrscheinlich ist das hier eher ein Missverständniss, aber für mich klingt das so, als wärst du der Meinung, dass .net es nicht zulässt, die Variablen wo anders als am Anfang zu deklerieren...
    Hast dich wahrscheinlich - in meinen Augen - einfach nur ungeschickt ausgedrückt ...

    ...
    Welche von den beiden Aussagen ist denn jetzt richtig ???

    Das erste war sarkastisch gemeint, da VB (das alte; unmanaged) dafür bekannt ist, dass alle neulinge "Option Explicit" NICHT verwenden...

    Das ist schön das DU das weisst.

    Klar isses schön, dass ich das weiß; und Schade, dass viele andere VB6ler das nicht wissen... Wenn das 1tens keine 2er Diskussion wäre (kommt mir zumindest so vor) und 2tens nicht im .net Forum wäre hätt ich auch keine Einwände dagegen, dass du das schreibst...

    Der einzige der sich hier "ange#####" fühlt bist doch DU.

    Ich hoffe stark du meinst angegriffen und nich angepi... ;)
    Und NEIN, das tuh ich nicht. Das ganze läuft aber einfach nur drauf hinaus, dass wir uns gegnseitig die Worte im Mund verdrehen...
    Streiten war wohl nicht das richtige Wort.

    Ob die Diskussion damit beendet ist, ist mir eigentlich ziehmlich egal; wenn du noch weiter übder diese Reihe von Missverständnissen "plaudern" willst, bitte per PN oder ICQ oder von mir aus sogar Skype ...
    Super Progger ist sicherlich nicht der letzte mit so einem Problem und da passen solche Postings einfach nicht rein...