Quantcast
Channel: Common Language Runtime Internals and Architecture forum
Viewing all articles
Browse latest Browse all 1710

How to proper handling exceptions within a class library?

$
0
0

I read the article Vexing exception about exception handling and I understand the guidelines to determine which exceptions you need to catch and handle, but I would like to better understand how to work with exceptions when developing a library for distribution to third parties.

Suppose that I'm developing a library that needs to read a file and to write another file in order to implement its functionality.

public void DoSomething(string sourceFileName, string targetFileName)
{
    FileStream sourceStream = null;
    FileStream targetStream = null;

    try
    {
        sourceStream = File.OpenRead(sourceFileName);
        targetStream = new FileStream(targetFileName, FileMode.Create, FileAccess.Write);

        // ...
        // do something...
        // ...
    }
    catch
    {
        throw;
    }
    finally
    {
        if (sourceStream != null)
        {
            sourceStream.Close();
            sourceStream.Dispose();
            sourceStream = null;
        }

        if (targetStream != null)
        {
            targetStream.Close();
            targetStream.Dispose();
            targetStream = null;
        }
    }
}

Since the above method is a method of a class library, and since I have no way to handle any exceptions that may occur during the opening of a stream, then it is appropriate to re-throw them: after all, the user layer developers could handle these exceptions by displaying an error message to the user.

Consider again the method that I just wrote and suppose that the statements after opening the stream invoke a method of an external library: this library may be loaded at runtime within a plugin architecture, so I am not able to know what exceptions could be launched by the method of this external library. How to deal with this situation?

Thanks a lot for your support!

Vincenzo




Viewing all articles
Browse latest Browse all 1710

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>