簡體   English   中英

是否可以使用源生成器來處理異常?

[英]Is it possible to use source generators to handle exceptions?

我有一個界面:

Task DoStuff();

和一個實現:

public async Task DoStuff()
{
    await DoStuffAndThrowException();
}

有沒有辦法使用源代碼生成器來處理異常,例如:

public async Task DoStuff()
{
    try
    {
        await DoStuffAndThrowException();
    }
    catch (Exception exception)
    {
        throw new MySpecialException(exception);
    }
}

或者:

public async Task DoStuff()
{
    await DoStuffAndThrowExceptionWrapped();
}

public async Task DoStuffAndThrowExceptionWrapped()
{
    try
    {
        await DoStuffAndThrowException();
    }
    catch (Exception exception)
    {
        throw new MySpecialException(exception);
    }
}

我不是源生成器方面的專家,但據我了解,它們不會修改現有方法:它們旨在添加生成的源。 所以它們對於你可能放在單獨的partial類文件中的東西很有用。

通過面向方面的編程框架可以更好地完成您想要做的事情。 Postsharp 是為這類事情而生的,但它要花錢,我還沒有用過。 Fody Weaver 庫有一些免費插件,它們可能可以幫助您完成所需的工作。 例如, MethodBoundaryAspect.Fody將允許您創建一個改變方法進入、退出和異常行為的屬性,然后您可以將這些屬性應用於特定方法、類中的所有方法或程序集中的所有方法。

暫無
暫無

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

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