Autor Beitrag
kostonstyle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Mi 13.01.10 10:09 
Hallo miteinander
habe eine Frage zu Ausnahmebehandlung. Habe folgendes programmiert:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            try
            {
                bool pattern;
                pattern = handle.file_end(this.txt_data.Text);
            }
            catch (InvalidValueException ex)
            {
                MessageBox.Show(ex.Message);
            }

bei der Auslösung eine InvalidValueException Ausnahme wird hier abgefangen und eine Message ausgegeben. Was ich bei der Sache nicht ganz verstehe, was macht das Programm nach einer Ausnahmebehandlung, fängt er wieder von vorne an?
Gruss kostonstyle
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mi 13.01.10 10:32 
Nein er läuft einfach weiter durch.

Edit:
Also nach dem Catch( oder finally)-Block gehts weiter nach der Exception.


Zuletzt bearbeitet von bakachan am Mi 13.01.10 10:59, insgesamt 1-mal bearbeitet
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 13.01.10 10:37 
Hallo,

wenn in deinem try-Block eine Exception geworfen wird fängt sie ein passender catch-Block auf. Passend heißt in dem Fall, dass die Exception oder ein Basistyp der Exception von dem geworfenen Typ ist (z.B. Exception ist die Superklasse welche alle Fälle "auffängt"). Es wird dann der Code im catch-Block ausgeführt. Danach wird der Code nach dem Block ausgeführt.

Mfg Daniel

// Edit:
Wenn die Exception zu keinem passenden catch-Block passt wird sie weiter "geworfen" bis sie am Ende von der Laufzeitumgebungs aufgefangen, das Programm beendet und die Exception ausgegeben wird.
kostonstyle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Fr 15.01.10 16:51 
ein Beispiel
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.ObjectModel;

namespace Daten_Copy
{
    /// <summary>
    /// Interaction logic for File_extend.xaml
    /// </summary>
    public partial class File_extend : Window
    {
        Handling_Data verify_ex = new Handling_Data();
        public File_extend()
        {
            InitializeComponent();
        }

        private void btn_add_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                verify_ex.file_end(this.txt_add.Text);
                this.lstview_extension.Items.Add(this.txt_add.Text);
            }
            catch (InvalidValueException ex)
            {
                MessageBox.Show(ex.Message, "Fehler");
            }
        }

        private void btn_del_Click(object sender, RoutedEventArgs e)
        {
            this.lstview_extension.Items.RemoveAt(this.lstview_extension.Items.IndexOf(this.lstview_extension.SelectedItem));
        }
    }
}

Was macht er hier nachden Catch Block? Ich kann einfach nicht nachvollziehen!
Mitmischer 1703
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Fr 15.01.10 16:54 
Weiterhüpfen. Er führt den catch-Block aus und macht dann nach der abschließenden Klammer des catch-Blockes weiter - in deinem Fall ist die Funktion dann zu Ende.

_________________
Die Lösung ist nicht siebzehn.
kostonstyle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Mo 18.01.10 08:05 
Die Funktion ist nun fertig durchlaufen. Was macht er den weiter?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 18.01.10 10:24 
Die Oberfläche wird weiter angezeigt und du kannst damit normal weiter arbeiten. Das heißt es werden wieder die entsprechenden Messages behandelt usw.