Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 927189
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T19:48:36+00:00 2026-05-15T19:48:36+00:00

I am writing an application in C# that requires me to create an Array

  • 0

I am writing an application in C# that requires me to create an Array object on the fly from some dimensions the user passes in. The Array.CreateInstance() method can throw (by last count) 6 different exceptions that I would want to handle. For each exception I would want to inform the user by a simple MessageBox.Show() and a message tailored to the exceptional circumstance. What I do not want to do is catch the general Exception type, because it is a best practice to not do so. I would try catching ArgumentException or something more specific, but the only common superclass to all of the exceptions is Exception.

Bottom Line: I am trying to figure out the best way to handle having so many different exceptions, and what would be an efficient and, more importantly, maintainable solution.

try
{
    data = Array.CreateInstance(TypeHelper.StringToType(cbDataType.SelectedItem.ToString()), dimensions);
}
catch (OutOfMemoryException) { }
catch (NullReferenceException) { }
catch (NotSupportedException) { }
catch (ArgumentNullException) { }
catch (ArgumentOutOfRangeException) { }
catch (ArgumentException) { }
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T19:48:36+00:00Added an answer on May 15, 2026 at 7:48 pm

    Of that list there are only 4 exceptions I would consider catching:

    • NotSupportedException
    • ArgumentNullException
    • ArgumentOutOfRangeException
    • ArgumentException

    The other two you should never catch, and as of the later CLR’s you can’t catch an OOM situation (consider MemoryFailPoint if you need to find out).

    Delving deeper into Array.CreateInstance, we see why each of those four would be thrown:

    • NotImplementedException: the type you gave it can’t be an array, or is an open generic. Since you are pulling these data types from a fixed list, you should know a priori that these are valid types. I would argue against handling this exception.
    • ArgumentNullException: you should be certain all of the arguments you pass are not null, thus this will never happen and you should not handle this exception.
    • ArgumentOutOfRangeException: one of the lengths is less than 0, which you can test a priori, thus you should not handle this exception.
    • ArgumentException: Thrown if the type is invalid (you’ve already made sure it is valid) or if there aren’t enough lengths, which you can test a priori.

    So, my suggested code would be:

    // code prior to this point ensures cbDataType only has correct types
    // and dimensions has at least 1 dimension and is all greater than or equal to 1
    data = Array.CreateInstance(
        TypeHelper.StringToType(cbDataType.SelectedItem.ToString()),
        dimensions);
    

    In summary, I would not handle any exceptions since you should be able to prevent all of them from occurring and you shouldn’t care about the instances where you can’t possibly handle the exception.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.