C# - Handle Ausnahme und BEENDEN Sie die Ausführung
Lassen Sie uns sagen, dass ich zwei Klassen. Hier ist der entsprechende code für die erste Klasse genannt Internet:
public void doRequest()
{
string URL = "http://localhost:4000/HomePage.aspx";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
}
public void GetRequestStreamCallback(IAsyncResult callbackResult)
{
HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
Stream postStream = myRequest.EndGetRequestStream(callbackResult);
byte[] byteArray = Encoding.UTF8.GetBytes("Test Message");
postStream.Write(byteArray, 0, byteArray.Length);
postStream.Close();
myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), myRequest);
}
public void GetResponsetStreamCallback(IAsyncResult callbackResult)
{
HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.EndGetResponse(callbackResult);
StreamReader httpWebStreamReader = new StreamReader(response.GetResponseStream());
string result = httpWebStreamReader.ReadToEnd();
}
catch (WebException)
{
Deployment.Current.Dispatcher.BeginInvoke(() => MessageBox.Show("Error: Could not reach the web service"));
}
}
Dieser code aufgerufen wird, ist durch eine Klasse namens " MainPage.xaml.cs:
private void Button_LogIn_Click(object sender, RoutedEventArgs e)
{
Internet net = new Internet();
bool check = net.checkInternet();
if (check.Equals(false))
{
}
else
{
net.doRequest();
ClientServiceSoapClient web_service = new ClientServiceSoapClient();
web_service.LogInCompleted += new System.EventHandler<LogInCompletedEventArgs>(LogInComplete);
web_service.LogInAsync(TextBox_Username.Text, TextBox_Password.Password);
}
}
Was ich will, ist, dass, wenn eine Ausnahme Auftritt in der doRequest-Methode aufrufen, wird die Ausnahme behandelt (WebException am Ende der Internet Klasse) und dann HALT ausführen von code, nachdem er (ClientServiceSoapClient Webservice....).
Wie kann ich dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie mit dem Schlüsselwort zurück hier (die "void" zurückgeben). Ich habe tatsächlich verwendet es zweimal, haben Sie eine leere if-Anweisung, also ich habe rejigged es ein wenig.
Jedoch, Sie verwenden eine asynchrone Methode, die nicht die für mich Sinn machen! Sollte es nicht Asynchron aufgerufen werden, wenn Sie brauchen, um zu überprüfen Sie das Ergebnis, bevor Sie fortfahren, es sollte getan werden, in serielle. Oder überprüfen Sie die erwarten Stichwort.
Der Titel ist zu Fragen, um zu beenden der Ausführung und nicht der Rückkehr aus einer Funktion. Also, wenn Sie nicht in der main-Funktion, und Sie nicht möchten, dass eine exception werfen, und dann fangen Sie wieder im Hauptfenster sind, können Sie die Option Umgebung verwenden.Exit() mit Exit-code.. https://msdn.microsoft.com/en-us/library/ms681382(v=vs. 85)
Können Sie catch exception, tun Sie etwas mit ihm, und dann rethrow, so dass keine weiteren code dieser Methode wird ausgeführt.