פורסם 2010 במרץ 1715 שנים יש דרך לקבל קוד שגיאה משגיאות קיימות ב.NET בדומה לHRESULT בC++?אני יודע איך לזרוק אחת עם HRESULT אבל בכל הדיפולטיות אני לא מוצא שום פרופרטי או מתודה שמוציאה את זה, אני לא רוצה לפרסר עכשיו 20 אופציות טקסט או להוציא סיפורי סבתא החוצה.
פורסם 2010 במרץ 2015 שנים מה בדיוק אתה צריך?בעקרון בתוך המחלקה Exception יש HRESULT אבל הוא protected.הדרך להשתמש ב-Exceptions ב-C# זה לפי הסוג ולא לפי קוד. אתה פשוט תופס ספציפית את הסוג שאתה מצפה לקבל בבלוק catch נפרד.// try_catch_ordering_catch_clauses.csusing System;class MainClass{ static void ProcessString(string s) { if (s == null) { throw new ArgumentNullException(); } } static void Main() { try { string s = null; ProcessString(s); } // Most specific: catch (ArgumentNullException e) { Console.WriteLine("{0} First exception caught.", e); } // Least specific: catch (Exception e) { Console.WriteLine("{0} Second exception caught.", e); } }}אתה יכול לעשות בלוק נפרד לכל סוג כמו שכתוב בדוגמא, מהכי ספציפי להכי כללי, ובכל בלוק אתה מטפל ספציפית בשגיאה שקיבלת. בד"כ אתה תסיים פשוט ב Exception כדי לוודא ששום דבר לא 'יברח' החוצה.
פורסם 2010 במרץ 2115 שנים מחבר אני יודע את זה, אני שואל אם יש דרך לגשת אליו למרות שהוא protected, ביינתיים מצאתי משהו ערבי זה להמיר את הException שאני מקבל לCOMexception ששם הHRESULT הוא לא protected.לעבוד עם "סוגים" כל זה נשמע מאוד מאוד יפה אבל כשיש לך קלאסים שלמים שכל מה שהם זורקים זה CryptographicException כשזה יכול להיות 80 דברים שונים זה כבר הופך לחתיכת clusterfuck...העניין הוא שהHRESULT של אותו Exception שאני רואה בdebugger הוא בדיוק הקוד שגיאה שאני מכיר(.NET מקבל אותו ישירות מCAPI וזה HRresult לכל דבר), וזה מעצבן ברמות שאני לא יכול לגשת אליו, במיוחד בקלאסים שאין להם יותר מסוג או 2 של exceptions...
פורסם 2010 במרץ 2115 שנים דוגמא כאן:http://msdn.microsoft.com/en-us/library/aa645736(VS.71).aspxאולי לא הבנתי אם זה לא עוזר?http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/e69e923f-dbe2-4fb6-9824-a21e0b8878db
פורסם 2010 במרץ 2115 שנים מחבר זה איך להוסיף אחד למשהו שאתה זורק, על העניין שזה חשוף בcomexecption כבר עליתי בעצמי אבל זה דבילי לחלוטין, גועל נפש של דבר פשוט ממש אבל ממש לא מעניין אותי הtype של הexception כאשר כל הקלאסים של MS בד"כ זורקים אותו אחד ל4345425 דברים.ובמיוחד כאשר אני עובד עם דברים שהם Low level כלומר אם אני עובד עם CAPI אז למשל CSP not found או the cryptographic operation is not valid for provided CSP או כל דבר אחר חוץ מהפניה לnull זורקים לי cryptographic exception, או משהו יותר מעצבן מתודה אחת של קלאס של MS שאמורה לוודא חתימה זורקת cryptographic exception על כל נפילה בתהליך מה שיכול להיות קובץ לא "תקין", checksum לא נכון, תעודה לא נכונה, בעיה בchain, בעיה בCRL, בעיה במכונת קפה. הממשק שלהם מול הDLLים של MS עובד יפה מאוד, הCAPI שולח HRESULT חד ערכי לכל exception, ובdebugger אני רואה את אותו HRESULT, אבל אם אני רוצה לגשת אליו אני לא יכול כי זה protected....פשוט גועל נפש של design מהבחינה הזאתי, אין לי דרך אחרת לתאר את זה, לתפוס את מי שהחליט לעשות את זה ככה, לכסות אותו בדבש ולזרוק אותו לקן של נמלי אש...
פורסם 2010 במרץ 2415 שנים הדרך היחידה כנראה היא באמת COMExpcetion. בכל מקרה אתה יכול להסתכל כאן: http://www.west-wind.com/weblog/posts/53203.aspxזה מיושם בצורה די פשוטה ככה שלא צריך להתעסק בהמרה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.