gpt4 book ai didi

exception - 电源外壳 2 : How to determine what exceptions a cmdlet can throw?

转载 作者:行者123 更新时间:2023-12-03 16:33:45 24 4
gpt4 key购买 nike

回到我(有限的)Java 编程时代,我记得这个不错的功能,如果我尝试进行可能引发异常的调用,Java 将要求我处理该异常或将其传递给可能的东西。

无论如何,我正在编写一段与 Active Directory 中的对象混在一起的 powershell 代码,所以我要非常非常小心。我偶尔会遇到远程超时错误,这让我想到了一个更普遍的问题:

“我怎样才能提前知道这些 cmdlet 中的哪些可以抛出指示危险情况的异常,以及这些可能的异常的列表是什么?”

我想知道每个 cmdlet 的异常列表是否太长而无法解决所有可能性。我也不想只写一个通用的异常处理程序,因为 powershell 在错误处理的一般意义上似乎做得很好。

根据 cmdlet,确定可能发生的所有异常的列表的最佳方法是什么?这甚至可能/可行吗?

谢谢!

最佳答案

呵呵,我觉得你一开始就走错了路。对于 Java 的检查异常是否是一个好主意,陪审团非常不同意。

也就是说,你问的问题很难回答。在 Java 中,通过静态分析,编译器可以清楚地知道哪些方法抛出(或至少它们声明它们将抛出什么)哪些异常;这是一个仅存在于编译器进程空间中的封闭系统。在分布式异构系统的现实世界中,没有通用的检查异常框架。 PowerShell cmdlet 存在于 win32 进程中的 .NET appdomain 域中,但它们使用诸如 Active Directory 之类的钝协议(protocol)与外部服务器上的支持系统通信,这些协议(protocol)在实现和一般概念上都截然不同。异常情况可能会从一个域“流动”到下一个域,但它们会在向您(控制台上的可怜用户)冒泡之前向各个方向扭曲、包裹和糊状。简而言之,答案是否定的。通用 Cmdlet(get-item、get-childitem)不知道底层提供程序系统导致错误的倾向,也不能可靠地知道这一点。

但是,如果您有一个用于 Active Directory 的专用模块(例如 Microsoft 的 ActiveDirectory 模块或 Quest 的 QAD 模块),那么他们可能已经列出了在支持系统中出现异常情况时其 cmdlet 将出现的异常。此帮助很可能会在模块(或管理单元)帮助文件中或在每个 cmdlet 的基础上找到。尝试运行以下命令:

ps> get-help do-something -full | more

这将显示完整的调用语法以及开发人员认为足以祝福您的任何注释。特别注意页脚;在这里,您通常会找到更通用的帮助主题,例如“about_thesecmdlets”,您可以通过以下方式查看: get-help about_thesecmdlets
希望这可以帮助。

关于exception - 电源外壳 2 : How to determine what exceptions a cmdlet can throw?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com