Существует ли простой способ передать конкретный *названный* параметры PowerShell через непосредственно к вызванной функции?

Иногда Вы хотите скрыть детали реализации метода или улучшить уровень абстракции проблемы так, чтобы it’s, более значимый для вызывающей стороны метода. Чтобы сделать это, можно прервать исходное исключение и заменить пользовательским исключением that’s лучше удовлетворенный для объяснения проблемы.

Берут, например, метод, который загружает требуемые детали user’s из текстового файла. Метод предполагает, что текстовый файл существует названный с user’s идентификатором и суффиксом “.data”. Когда тот файл doesn’t на самом деле существует, это, doesn’t имеют много смысла бросать FileNotFoundException, потому что то, что каждый user’s детали хранится в текстовом файле, является деталью реализации, внутренней к методу. Таким образом, этот метод мог вместо этого обернуть исходное исключение в пользовательское исключение с объяснительным сообщением.

В отличие от кода Вас показывают, лучшая практика - то, что исходное исключение должно быть сохранено путем загрузки его как свойства InnerException нового исключения. Это означает, что разработчик может все еще проанализировать базовую проблему при необходимости.

при создании пользовательского исключения, вот полезный контрольный список:

• Находят хорошее имя, которое передает, почему исключение было выдано, и удостоверьтесь, что имя заканчивает словом “Exception”.

• Гарантируют, чтобы Вы реализовали трех типичных конструкторов исключения.

• Гарантируют, чтобы Вы отметили свое исключение с сериализуемым атрибутом.

• Гарантируют, чтобы Вы реализовали конструктора десериализации.

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

•, Если Вы добавляете какие-либо пользовательские свойства, удостоверяются, что Вы реализуете и переопределяете GetObjectData для сериализации пользовательских свойств.

•, Если Вы добавляете какие-либо пользовательские свойства, переопределяют Свойство сообщения так, чтобы можно было добавить свойства к стандартному сообщению об исключении.

• Не забывают присоединять исходное исключение с помощью свойства InnerException пользовательского исключения.

10
задан Peter Mortensen 4 December 2014 в 14:34
поделиться

3 ответа

В PowerShell v2 (к которому вы, по общему признанию, возможно, еще не готовы перейти) позволяет передавать параметры, не зная о них заранее:

called-func $PSBoundParameters

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

3
ответ дан 4 December 2019 в 03:16
поделиться

Ну, мне кажется, я запутал сообщение в блоге , которое я читал о параметрах переключателя. Насколько я могу судить, лучший способ - просто повторно использовать такие параметры:

called-func -foo:$foo -bar:$bar
2
ответ дан 4 December 2019 в 03:16
поделиться

Как насчет

called-func  $foo $bar
1
ответ дан 4 December 2019 в 03:16
поделиться
Другие вопросы по тегам:

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