Броски или выгода попытки

Это достаточно просто с PowerShell. Код сравнивает длину исходной строки со строкой с удаленными символами TILDE.

Это можно запустить на любой современной машине с Windows, поддерживаемой cmd.exe. Да, намного проще и чище, если он написан как скрипт PowerShell.

@ECHO OFF
SET "inputFile=.\countds.csv"
powershell -NoLogo -NoProfile -Command ^
    "Get-Content -Path '%inputFile%' |" ^
        "ForEach-Object {" ^
            "$ns = 

Это достаточно просто с PowerShell. Код сравнивает длину исходной строки со строкой с удаленными символами TILDE.

Это можно запустить на любой современной машине с Windows, поддерживаемой cmd.exe. Да, намного проще и чище, если он написан как скрипт PowerShell.

[110] -replace '~','';" ^ "if ((

Это достаточно просто с PowerShell. Код сравнивает длину исходной строки со строкой с удаленными символами TILDE.

Это можно запустить на любой современной машине с Windows, поддерживаемой cmd.exe. Да, намного проще и чище, если он написан как скрипт PowerShell.

[110].Length - $ns.Length) -ne 7) {" ^ "'Length is {0}' -f (

Это достаточно просто с PowerShell. Код сравнивает длину исходной строки со строкой с удаленными символами TILDE.

Это можно запустить на любой современной машине с Windows, поддерживаемой cmd.exe. Да, намного проще и чище, если он написан как скрипт PowerShell.

[110].Length - $ns.Length)" ^ "}" ^ "}"
71
задан Mike B. 5 February 2019 в 15:03
поделиться

6 ответов

  • перехватить исключение, только если вы можете обработать его осмысленным образом
  • объявить выброс исключения вверх, если он должен быть обработан потребителем текущего метода
  • генерировать исключения, если они вызваны входными параметрами (но чаще они не проверяются)
53
ответ дан 24 November 2019 в 13:07
поделиться

Как правило, метод должен генерировать исключение для вызывающего, если он не может решить связанную проблему локально. Например. если предполагается, что метод читает из файла с заданным путем, IOExceptions не могут быть обработаны локально разумным образом. То же самое относится и к недопустимому вводу, добавляя, что я лично выбрал бы в этом случае непроверенное исключение, например IllegalArgumentException .

И он должен перехватить исключение из вызываемого метода, если:

  • это что-то, что может быть обработано локально (например, попытка преобразовать входную строку в число, и если преобразование завершится неудачно, это полностью допустимо для вместо этого вернуть значение по умолчанию),
  • или его не следует генерировать (например, если исключение исходит от нижнего уровня, зависящего от реализации, детали реализации которого не должны быть видны вызывающему - например, я не хочу покажите, что мой DAO использует Hibernate для сохранения моих сущностей, поэтому я перехватываю все HibernateExceptions локально и конвертирую их в свои собственные типы исключений).
14
ответ дан 24 November 2019 в 13:07
поделиться

Решение добавить в свои методы try-catch или throws зависит от того, «как вы хотите (или имеете) обрабатывать ваше исключение».

Как обработать исключение - это широкий и далеко не тривиальный вопрос. В частности, оно включает решение о том, где обрабатывать исключение и какие действия выполнять в блоке catch. Фактически, как обработать исключение, должно быть глобальным проектным решением.

Поэтому, отвечая на ваши вопросы, эмпирического правила не существует.

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

3
ответ дан EijiAdachi 24 November 2019 в 13:07
поделиться

Мое личное практическое правило для этого простое:

  • Могу ли я справиться с этим осмысленным образом (добавлено из комментария)? Так что поместите код в try / catch . Под обработкой этого я подразумеваю возможность информировать пользователя / восстанавливать ошибку или, в более широком смысле, понимать, как это исключение влияет на выполнение моего кода.
  • В другом месте, выбросьте его.

Примечание: этот ответ теперь является вики-страницей сообщества, не стесняйтесь добавлять дополнительную информацию в.

9
ответ дан 24 November 2019 в 13:07
поделиться

Вот как я его использую:

Throws:

  • Вы просто хотите, чтобы код останавливался, когда возникает ошибка.
  • Хорошо подходит для методов, которые склонны к ошибки, если определенные предварительные условия не выполнены.

Try-Catch:

  • Когда вы хотите, чтобы программа вести себя по-разному при различных ошибках.
  • Отлично подходит, если вы хотите предоставить значимые ошибки конечным пользователям.

Я знаю много людей, которые всегда используют Throws, потому что это чище, но просто нет такого контроля.

8
ответ дан 24 November 2019 в 13:07
поделиться

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

2
ответ дан 24 November 2019 в 13:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: