automation - 编译脚本中的异常
问题描述
我想分享一个问题,Exception(Message [, What, Extra])
如果脚本是在 .exe 中编译的,则该函数无法按预期工作
Exception("").What
如果脚本未编译,则给出当前方法/函数/子例程Exception("", -2).What
如果脚本未编译,则给出调用方法/函数/子例程的父方法Excetpion("").What
如果脚本编译为 .exe,则给出当前方法/函数/子例程Exception("", -2).What
如果脚本编译为 .exe,则仅给出 -2
class MyClass { Method1() { MsgBox % MyClass.Method2() } Method2() { return Exception("", -2).What } } MyClass.Method1()
在非编译MyClass.Method1()
显示 MyClass.Method1
但在编译的 .exe 脚本中MyClass.Method1()
显示 -2
如果脚本已编译,任何人都有解决方案来显示方法而不是数字?
解决方案
它实际上确实按预期工作,因为这种行为在文档中有所说明:
如果省略What,则默认为当前函数或子例程的名称。否则,它可以是字符串或距调用堆栈顶部的负偏移量。例如,值 -1 设置
Exception.What
为当前函数或子例程,以及Exception.Line
调用Exception.File
它的行和文件。但是,如果脚本被编译或者偏移量无效,What只是简单地转换为字符串。
另外,我认为您在这里的实现有点奇怪,您肯定想抛出异常而不是返回它们吗?
无论如何,我想你的解决方案是自己实现这个。
例如,您可以将调用者作为参数传入:
instance := new MyClass
try
instance.Method1()
catch e
MsgBox, % e.What
class MyClass
{
Method1()
{
this.Method2(A_ThisFunc)
}
Method2(caller)
{
throw Exception("", caller)
}
}
推荐阅读
- python-asyncio - 如何在 Python 中将基于回调的库与 asyncio 库结合起来?
- typescript - 如何在 atom 中正确显示 emacs 编辑的文件?
- reactjs - Jest 使用 create-react-app 手动模拟:如何在测试中使用模拟值
- javascript - 如何在特定 laravel 刀片视图上扩展 vuejs 应用程序实例
- javascript - jQuery从包含的脚本中最近的按钮数据标签中获取
- rxjs - 当内部的任何一个发出时,发出 combine observable
- iot - 解码 lorawan 数据 gps 追踪器 Moko LW001-BG Thethings network
- php - PHP - 如何获取数组/链表中的所有可能性序列
- json - 如何从 JMeter 的 json 响应中的长 html 内容中提取特定的 *token* 值
- microsoft-graph-api - 无法从 Microsoft graph 获取批量管理器数据