Ich habe den folgenden Code als eine Android App ausgeführt. Das lHttp sendet eine Anfrage an einen WebService, den ich gemacht habe, wo die IP (URL) und der Port vom Benutzer definiert wurden. Wenn der Webservice in dieser URL nicht aktiv ist, ist die App jedoch abgestürzt. Während des Debuggens gibt es die folgenden Fehler beim Versuch, eine Ausnahme abzufangen.IDHTTP Exception verursacht Segmentation Fault
ausgelöst Ausnahmeklasse EIdHTTPProtocolException mit der Nachricht 'HTTP/1.1 500 Internal Server Error'.
ausgelöste Ausnahmeklasse Segmentierungsfehler (11).
ausgelöst Exception Klasse EAccessViolation mit der Meldung 'Zugriff auf die Adresse B6FBD7CE, Zugriff auf Adresse 000000A8'.
Kann jemand diese Ausnahme fangen, ohne die App zu stürzen?
Path:= 'http://'+ Conf.IP + ':' + Conf.Port +'/services/MyWebService.dll/GetQuestions';
lHTTP:= TIdHTTP.Create(nil);
Stream:= TStringStream.Create;
Stream.WriteString(Requisition);
try
Result := lHTTP.Post(Path, Stream);
except
on E:EIdException do
Result:= E.Message;
on E:EIdSocketError do
Result:= E.Message;
on E:EIdConnClosedGracefully do
Result:= E.Message;
on E:EIdHTTPProtocolException do
Result:= E.Message;
on E:Exception do
Result:= E.Message;
end;
Stream.Free;
FreeAndNil(lHTTP);
Welcher der fünf Ausnahme-Handler fängt tatsächlich die Ausnahme? Es ist möglich, dass die serverseitige MyWebService.dll einen Fehler hatte, und die HTTP-Antwort nur die Fehlermeldung an Ihre Client-App – mjn
"HTTP/1.1 500 Internal Server Error" sendet, bedeutet, dass Sie eine falsche Anfrage an den Server senden oder Es ist einfach ein Problem auf der Serverseite. – Machado