2016-09-22 2 views
1

Наконец, я планирую писать проекты с открытым исходным кодом, но я глубоко смущен. Я знаю, что неплохо использовать механизмы обработки исключений в моем коде, но большинство проектов с открытым исходным кодом, которые я вижу (даже популярные), не используют try ... catch и exceptions. Зачем? Что плохого произойдет, если я их использую в открытом исходном коде?Обработка исключений в открытом исходном коде (try-catch)

+0

Какую альтернативу используют эти проекты с открытым исходным кодом вместо try/catch? – jaco0646

+0

@ jaco0646 они просто возвращают значения, чтобы помечать ошибки – Fresher

+0

@Fresher, к какому языку вы обращаетесь? Стратегии обработки исключений в значительной степени ориентированы на язык. Пример: сообщество Java в значительной степени верит в проверенные исключения, где люди .net считают это анти-шаблоном. Если вы ссылаетесь на большинство языков сценариев, все очень разные. –

ответ

1

но большинство проектов с открытым исходным кодом, которые я вижу (даже популярные), не используют try ... catch и exceptions.

Основной язык, который вы используете для разработки своей инфраструктуры, значительно повлияет на вашу стратегию на том, как ваша инфраструктура может или должна обрабатывать ошибочные условия. Различные языки программирования имеют разные механизмы обработки исключений. Java, например, имеет концепцию проверяет исключения, которые разработчик вынужден либо обрабатывать, либо передавать абоненту. C#, с другой стороны, не имеет понятия проверено исключений. Скорее всего, рамки, на которые вы ссылаетесь, на использование языков, которые сами не имеют понятия , проверили исключения.

Приведем пример. Предположим, вы хотите создать структуру для чтения файлов с разделителями и погрузить их в память (объекты). Вы пишете слой, который отвечает за чтение файла на основе имени файла и пути, предоставленного программистом. Одним из исключительных условий, которые будут довольно распространены в такой структуре, является то, что имя файла или пути недействительно. Если вы создали свою фреймворк в Java, скорее всего, вы использовали один из API чтения файлов, предоставляемый Java, для чтения файла. Большинство API чтения файлов в java throw проверяет исключения (например, FileNotFoundException), которые разработчик должен обрабатывать или распространять. Если ваш язык выбора сам заставляет вас работать с исключениями, вы обязательно столкнетесь с ситуацией, в которой вы останетесь без выбора, кроме как использовать инфраструктуру исключения, предоставляемую языком.

Почему? Что плохого произойдет, если я их использую в открытом исходном коде?

Настоящая проблема с исключительной управляемостью заключается в правильном использовании этой функции (особенно на языках, имеющих концепцию проверенных исключений). Неопытные или ленивые программисты могут просто злоупотреблять этой функцией, сделав исключение сквозным вплоть до начальной точки приложения; только для того, чтобы среда выполнения выполняла исключение. Следующий фрагмент кода демонстрирует один из таких злоупотреблений:

public static String loadData(String fileName)throws FileNotFoundException { 
    String resource = ResourceManager.getResource(fileName); 
    //code to read the file 
} 

public static boolean containsText(String fileName,String text)throws FileNotFoundException { 
    String contents = loadData(fileName); 
    if(contents.contains(text)) { 
     return truel 
    } 
    return false; 
} 

public static void main(String []args)throws FileNotFoundException { 
    containsText("/home/abc.txt","Account Number"); 
} 

Другой способ злоупотреблять этой функцией будет построить API, который имеет слишком много проверяемых исключений бросают вокруг. Это потребует от пользователей API писать больше кода обработки исключений, чем фактическая логика бизнеса/приложения.

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