Class Library Exception Passing To Other Class Library Or Executable?

I want to learn the absolute correct way to pass exceptions from Class Library .dll to other .dll or Executable (Form1). I don't receive the actual .dll exception, instead I receive a general try/catch exception from the Form1 attempt to use the .dll. Help!

[Example Summary]
Click a button on Form1 to clear the local Queue without first specifying the Queue name will cause an exception.
Seems to me the the .dll CreateQueue() exception should 'bubble-up' to Form1.

Does this make sense?

Q1. How do I pass the .dll exception to the .exe (MyForm1)?
Q2. How do I pass the .dll exception to another .dll then to .exe (MyForm1)?

[MyForm1.exe]
public static void ClearQueue()
        {
            msgQueue.QueueName = ""; //intentionally blank for testing purposes
            msgQueue.ClearQueue();
        }


[MyQueueManager.dll] (referenced by MyForm1.exe)
        public static void CreateQueue()
        {
            try
            {
                if (MessageQueue.Exists(_queueName))
                    msgQueue = new MessageQueue(_queueName);
                else
                    msgQueue = MessageQueue.Create(_queueName);
            }
            catch (MessageQueueException ex)
            {
                throw new Exception("MsmqManager.MSMQueue.CreateQueue() Exception: ", ex);
            }
        }

        public static void ClearQueue()
        {
            CreateQueue();

            msgQueue.Purge();
        }
pointemanAsked:
Who is Participating?
 
Gary DavisConnect With a Mentor Dir Internet SvcsCommented:
Since your dll is doing a throw, your call to msgQueue will need a try/catch to know the details of the exception being thrown.

Another alternative is to have an Error property within the MessageQueue class and that would have to be set with the error information if an error occurs instead of issuing a throw. Then you will need to test the Error property at various points and act as needed.

Gary Davis
0
 
pointemanAuthor Commented:
Q. Do you think the .dll 'Catch' is correct or do you recommend another way?
0
 
Gary DavisDir Internet SvcsCommented:
The try/catch in the dll looks correct to me.
0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
pointemanAuthor Commented:
Q. Do you prefer throw ex; vs my code example?

I've also been working with throw ex.Innexcepion; as well.
0
 
Gary DavisDir Internet SvcsCommented:
I'm not sure I understand. Your example does issue a throw.
0
 
pointemanAuthor Commented:
Thx
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.