<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Re: Bug with exception handling?</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/330.aspx</link><pubDate>Tue, 19 Oct 2004 23:51:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:330</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/330.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=330</wfw:commentRss><description>Βρήκα και το παρακάτω post &lt;a target="_blank" title="http://www.dotnet247.com/247reference/msgs/42/210579.aspx" href="http://www.dotnet247.com/247reference/msgs/42/210579.aspx"&gt;http://www.dotnet247.com/247reference/msgs/42/210579.aspx&lt;/a&gt;, όπου κάποιος από τη Microsoft λέει:&lt;br /&gt;&lt;br /&gt;I share your concern. We've few cases where we are eating &lt;span class="highlight2"&gt;exception&lt;/span&gt;s which&lt;br /&gt;will just mask the errors. &lt;span class="highlight2"&gt;Exception&lt;/span&gt;s should be propagated all the way.&lt;br /&gt;We'll be fixing issues related with eating &lt;span class="highlight2"&gt;exception&lt;/span&gt;s.&lt;br /&gt;&lt;br /&gt;Όπως φαίνεται, η ιδέα του να τρως τα exceptions θεωρείται μάλλον κακή.</description></item><item><title>Re: Bug with exception handling?</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/328.aspx</link><pubDate>Tue, 19 Oct 2004 22:58:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:328</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/328.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=328</wfw:commentRss><description>&lt;p&gt;Να υπάρχει πρόβλημα με το exception handling είναι "ελαφρώς" απίθανο.&lt;img src="/Forums//emoticons/emotion-5.gif" alt="Wink" /&gt;&lt;br /&gt;&lt;br /&gt;Αυτό που πρέπει να συμβαίνει είναι ότι ο κώδικας μέσα στο DataTable που σηκώνει το RowChanged event πρέπει να καταπίνει τα exceptions, ενώ του RowChanging να τα σηκώνει προς τα πάνω. Ένα &lt;a target="_blank" title="http://msdn.microsoft.com/library/en-us/vbcon/html/vbcondataupdateevents.asp" href="http://msdn.microsoft.com/library/en-us/vbcon/html/vbcondataupdateevents.asp"&gt;σχετικό άρθρο &lt;/a&gt;στο MSDN λέει τα παρακάτω:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Τhe &lt;b&gt;ColumnChanging&lt;/b&gt;, &lt;b&gt;RowChanging&lt;/b&gt;, and &lt;b&gt;RowDeleting&lt;/b&gt; events are raised during the update process. You can use these events to validate data or perform other types of processing. Because the updates are in process during these events, you can cancel the update by throwing an exception, which prevents the change from being completed. For more information, see &lt;/em&gt;&lt;a target="_blank" title="http://msdn.microsoft.com/library/en-us/vbcon/html/vbtskvalidatingdataindatasets.asp" href="http://msdn.microsoft.com/library/en-us/vbcon/html/vbtskvalidatingdataindatasets.asp"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;&lt;em&gt;Data Validation in Datasets&lt;/em&gt;&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;The &lt;b&gt;ColumnChanged&lt;/b&gt;, &lt;b&gt;RowChanged&lt;/b&gt;, and&lt;b&gt; RowDeleted&lt;/b&gt; events are notification events that are raised when the update has been completed successfully. These events are useful when you want to take further action based on a successful update. &lt;br /&gt;&lt;br /&gt;&lt;/em&gt;Σίγουρα, δεν λέει ξεκάθαρα ότι το RowChanged σταματάει τα exceptions. Αν το κάνει όμως, έχει τη λογική του. RowChanged καταπίνει το exception γιατί δεν είναι δυνατόν να κάνεις τίποτα πλέον στο σημείο που άλλαξες το row. Η αλλαγή έχει ήδη γίνει με επιτυχία και το datatable μπορεί να συνεχίσει, απλά απέτυχε ο κώδικας που χρησιμοποίησες για να κάνει κάτι μετά την αλλαγή. Λογικά, εκεί θα πρέπει να προσπαθήσεις να αντιμετωπίσεις το σφάλμα. Αν το δείς από την πλευρά του datatable, τί να κάνει αν δει ένα error στο RowChanged? Δεν μπορεί να αντιστρέψει τις αλλαγές που έκανε, και δεν υπάρχει λόγος να σταματήσει την εκτέλεσή του.&lt;br /&gt;&lt;br /&gt;Σίγουρα πάντως, το MSDN θα έπρεπε να αναφέρει τη διαφορά.&lt;/p&gt;</description></item><item><title>Bug with exception handling?</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/317.aspx</link><pubDate>Tue, 19 Oct 2004 16:44:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:317</guid><dc:creator>Eyclides</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/317.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=317</wfw:commentRss><description>Αν τρέξετε το παρακάτω απλό προγραμματάκι σε μια windows forms με ένα κουμπί θα δείτε ότι το exception που ΄γίνεται raised στην &lt;font size="2"&gt;chng_RowChanged δεν πιάνεται πουθενά. AN τώρα στη θέση&amp;nbsp; της &lt;p&gt;chng.RowChanged+=&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; DataRowChangeEventHandler(chng_RowChanged); γράψετε &lt;/p&gt; &lt;p&gt;chng.RowChanging+=&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; DataRowChangeEventHandler(chng_RowChanged);&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;τότε το exception γίνεται caught. Any idea?&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; button1_Click(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;object&lt;/font&gt;&lt;font size="2"&gt; sender, System.EventArgs e)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;DataTable data=&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; DataTable();&lt;/p&gt; &lt;p&gt;DataSet fDS=&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; DataSet();&lt;/p&gt; &lt;p&gt;data.TableName="DATA";&lt;/p&gt; &lt;p&gt;data.Columns.Add ("ID",&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt;));&lt;/p&gt; &lt;p&gt;data.Columns.Add ("Code",&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt;));&lt;/p&gt; &lt;p&gt;fDS.Tables.Add(data);&lt;/p&gt; &lt;p&gt;DataRow row=data.NewRow();&lt;/p&gt; &lt;p&gt;row["ID"]=1;&lt;/p&gt; &lt;p&gt;row["CODE"]="0000";&lt;/p&gt; &lt;p&gt;data.Rows.Add(row);&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;try&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;DataTable chng=data.GetChanges(DataRowState.Added|DataRowState.Modified|DataRowState.Deleted);&lt;/p&gt; &lt;p&gt;chng.RowChanged+=&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; DataRowChangeEventHandler(chng_RowChanged);&lt;/p&gt; &lt;p&gt;chng.Rows[0][0]=2; &lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt;(Exception ex)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;Debug.WriteLine("#2.Exception : "+ex.Message);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;throw&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;p&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; chng_RowChanged(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;object&lt;/font&gt;&lt;font size="2"&gt; sender, DataRowChangeEventArgs e)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;try&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;throw&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; Exception ("ERROR");&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt;(Exception ex)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;Debug.WriteLine ("#1.Exception : "+ex.Message);&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;throw&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;} &lt;/p&gt;&lt;/font&gt;</description></item></channel></rss>