2011-10-26 2 views
-2

Si je lis une chaîne à partir d'un fichier de configuration, j'utiliserais une approche similaire à celle ci-dessous, dans le cas où la chaîne n'est pas présente dans le fichier en cours de lecture et une exception se produit. Cependant, si je veux faire la même chose pour un tableau string [], je ne peux pas simplement le 'new up' en dehors du bloc try car la taille n'est pas connue.Try-catch créer un nouveau tableau en C# - où l'initialiser?

Je ne peux pas le faire dans le bloc try lui-même. Comment devrait-il être abordé?

string[] logContent; // can't new it up here as don't know the size 

       try 
       { 
        logContent = File.ReadAllLines(aLogFile); 
       } 
       catch 
       { 
        throw new Exception("LoggerStandard: Specified Logfile exists but could not be read."); 
       } 
+2

Pourquoi voudriez-vous le "nouveau"? –

+0

Pourquoi les gens downvote cela sans commentaire? Goons. – Glinkot

Répondre

6

Vous pouvez l'initialiser à une valeur par défaut:

string[] logContent = null; 
try 
{ 
    logContent = File.ReadAllLines(aLogFile); 
} 
catch 
{ 
    // Be careful with the error message here => there might be other reasons 
    // that the ReadAllLines threw an exception 
    throw new Exception("LoggerStandard: Specified Logfile exists but could not be read."); 
} 
+0

+1 pour la prudence sur la capture. Peut-être attraper des exceptions spécifiques (dans le bon ordre) et ensuite avoir une prise générale en dernier? – Tim

1

Vous pouvez initialiser avec null puis vérifier contre elle.

0

Par défaut, il est nul. Vous pouvez le laisser tel quel, si cela est approprié pour votre programme, ou l'initialiser à n'importe quel tableau en fonction de vos besoins. Quoi qu'il en soit, une initialisation réussie à l'intérieur du bloc try l'emporte.

0
string[] logContent=null; 
try 
{ 
    logContent = File.ReadAllLines(aLogFile);     
}     
catch     
{      
    throw new Exception("LoggerStandard: Specified Logfile exists but could not be read.");     
} 
Questions connexes