2013-05-01 1 views
0

Ну, у меня есть класс, который его конструктор проверяет, существует ли файл. Если файл не существует, я создаю новое исключение.Как сделать исключение в этом случае - C#

Проблема не в том, что, когда исключение, пользователь может видеть все мой код ...

Ни в коем случае, исключение обнаруживается откуда экземпляр пользовательского класса?

, например

запуск, за исключением, что здесь происходит, таким образом, программист может видеть все это в классе

if (!File.Exists(FileLocation)) 
     { 
      throw new TFDException("File not found in the provided directory."); 
     } 

но хотелось бы произойти здесь, вот где я создаю экземпляр класса

TFDConnection con = new TFDConnection("D:\\File.tfd"); 
+0

Почему бы вам не обернуть ваш вызов ctor в блок try-catch? – flq

+0

Я думаю, вы хотите посмотреть на StackTrace исключения. http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx – cheedep

+0

http://stackoverflow.com/questions/2973343/how-to-hide-the-current-method-from- exception-stack-trace-in-net – YK1

ответ

0

Вы можете сделать это

try 
{ 
    TFDConnection con = new TFDConnection("D:\\File.tfd"); 
} 
catch(Exception exx) 
{ 
} 

исключение перехвата

+0

Ну, DLL будет использоваться программистами. Мое дело программист, который использует DLL, не открывает попытку .. catch при создании экземпляра класса? (Целенаправленно или нет). Является ли это тем, где я делаю эту библиотеку, должен иметь полную безопасность бизнес-правила .. до тех пор, пока у нас не будет укомплектованный код обфускатора (даже если он не полностью предотвратит, а сложнее). В моей голове это возможно, поэтому в классах и структурах, поскольку SqlConnection, FileInfo и т. Д. Обрабатывается таким образом, методы лечения, которые мы в конечном итоге также должны давать одинаковый результат, нет? Дело есть. Как получить этот результат. kkkk –

0

Если исходный код не будет доступен для других программистов в том же месте, который определен в файлах pdb, они не будут видеть фактический исходный код в исключении. Но в целом, если другой программист действительно захочет найти то, что происходит, ничто не поможет даже обфускаторам, они только сделают это немного сложнее ... Но есть и другое: почему вы бросаете исключение в конструкторе? Это не очень хорошая практика, потому что это может оставить некоторые ресурсы в нераскрытом состоянии ... Лучше избегать таких вещей.

+0

Это именно то, что я делаю. 'System.Data.SqlClient.SqlConnection con = новый System.Data.SqlClient.SqlConnection (" kkkkk "); con.Open(); ' Обратите внимание, что я не открыл попытку .. catch, и когда исключение было брошено, она вошла в библиотеку SqlConnection ... она просто указала ошибку, которая была создана. Вы можете сделать это в моих библиотеках? –

Смежные вопросы