簡體   English   中英

從ClassLibrary拋出異常

[英]Throw exception from ClassLibrary

當您嘗試將新的異常從ClassLibrary拋出到另一個項目時,Visual Studio將打開Class1.cs並處理錯誤。

我的問題是:如何將異常從被調用函數(ClassLibrary)扔給調用者函數(Windows窗體)?

注意 :我不想引發原始異常,我想引發這樣的自定義異常

throw new Exception("change your password")

我認為您對Exception和Exception處理的基本理解還有很長的路要走,我強烈建議您選擇有關C#開發的資源。

為了解決您眼前的問題,我認為您正在尋找的答案在於:

Visual Studio工具欄->調試->異常

Visual Studio會“破壞”您指定的各種異常,並且任何未檢查的內容都將簡單地通過任何try / catch塊處理該異常類型的過程進行。

當您提及:

注意:我不想引發原始異常,我想引發這樣的自定義異常

throw new Exception("change your password")

那是通用異常的定義而不是自定義異常。 要定義自定義異常,應將Exception子類化:

public class MyCustomException : Exception 
{
   ...
}

然后像這樣拋出它:

throw new MyCustomException("Some description of what went wrong");

然后,要使Visual Studio針對該特定異常“中斷”,請在“工具欄”->“調試”->“異常”窗口(在CLR異常下)中找到您的異常,並標記它旁邊的復選框。

throw YourExceptionYouWantToThrow;

要么

throw new TypeOfExceptionYouWantToThrow();

異常將被下一個catch塊捕獲。 如果沒有try-catch,應用程序將崩潰。 如果是Visual Studio調試器,則調試器將打開Class1.cs並向您顯示異常源。 您可以通過以下方式捕獲它:

private void ButtonClick(...)
{
    try{
        Class1.MethodCall();
    }
    catch(Exception ex)
    {
        //Handle the exception here
    }
}

我發現了問題。

如果您有ClassLibrary項目的源代碼(包括在Class1.cs中),並且已在調試文件夾中使用了項目dll,則將發生此問題。

因此,如果我將項目程序集(僅用於dll)發送給我的朋友,那么他將不會遇到問題

有人有明確的主意嗎?

try
{
    YourClass.Function();
}
catch(Exception ex)
{
   // throw your Exception
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM