小编Jac*_*ack的帖子

覆盖"内部快乐错误" - notHappyAtAll

我使用Happy来生成解析器.

我发现当我给它的标记部分语法比顶层更低时(比如给它一个表达它自己,这不是一个声明的一部分),我得到一个"内部快乐"错误"而不是解析错误.

有没有办法覆盖,notHappyAtAll以便我可以打印比"内部快乐错误"更好的错误消息?显然,除了更改自动生成的解析器文件之外,我每次更新语法时都必须这样做.

error-handling parsing haskell happy

11
推荐指数
1
解决办法
394
查看次数

Powershell:无法启动服务时抛出Catch异常

我似乎无法捕捉到被抛出的异常Start-Service.这是我的代码:

try
{
    start-service "SomeUnStartableService"
}
catch [Microsoft.PowerShell.Commands.ServiceCommandException]
{
    write-host "got here"
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,抛出异常但没有捕获:

*Service 'SomeUnStartableService' start failed.
At line:3 char:18
+     start-service <<<<  "SomeUnStartableService"
    + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service], ServiceCommandException
    + FullyQualifiedErrorId : StartServiceFailed,Microsoft.PowerShell.Commands.StartServiceCommand*
Run Code Online (Sandbox Code Playgroud)

$ErrorActionPreference 设置为停止,所以这不应该是问题.

当我将代码更改为时catch [Exception],将捕获异常并打印"到达此处".

是否start-service抛出ServiceCommandException或其他什么东西?它看起来好像是但我无法抓住它!

---编辑---

理想情况下,我可以编写以下内容,如果start-service没有抛出异常则抛出异常,并且只捕获由start-service以下引发的异常:

try
{
    start-service "SomeUnStartableService"
    throw (new-object Exception("service started when expected not to start"))
}
catch [Microsoft.PowerShell.Commands.ServiceCommandException]
{
    write-host "got here"
}
Run Code Online (Sandbox Code Playgroud)

powershell service exception try-catch

10
推荐指数
2
解决办法
2万
查看次数

检测使用相同名称运行的进程数

有关如何编写返回进程实例数的函数的任何想法都在运行?

也许是这样的?

function numInstances([string]$process)
{
    $i = 0
    while(<we can get a new process with name $process>)
    {
        $i++
    }

    return $i
}
Run Code Online (Sandbox Code Playgroud)

编辑:开始编写一个函数...它适用于单个实例但如果运行多个实例则会进入无限循环:

function numInstances([string]$process)
{
$i = 0
$ids = @()
while(((get-process $process) | where {$ids -notcontains $_.ID}) -ne $null)
    {
    $ids += (get-process $process).ID
    $i++
    }

return $i
}
Run Code Online (Sandbox Code Playgroud)

powershell process instances

7
推荐指数
4
解决办法
2万
查看次数

将字符串转换为Haskell中的Type构造函数

有没有人知道Haskell中是否有一个函数可以做这样的事情:

"Int" -> Int

"String" -> String

"Bool" -> Bool
Run Code Online (Sandbox Code Playgroud)

即.它采用类型构造函数名称的字符串表示形式,并将其转换为实际类型构造函数,包括表达式和模式.

编辑:我的总体目标是简化:

transExp (Add exp1 exp2) vars
  = transExp exp1 vars ++ transExp exp2 vars ++ [IAdd]

transExp (Sub exp1 exp2) vars
  = transExp exp1 vars ++ transExp exp2 vars ++ [ISub]
Run Code Online (Sandbox Code Playgroud)

进入单个模式匹配,所以基本上将Add或Sub转换为字符串,在前面添加"I",并将其转换回类型.

string haskell types template-haskell

7
推荐指数
1
解决办法
1317
查看次数

使用指令,命名空间和程序集参考 - 所有这些都与StyleCop混在一起!

我喜欢坚持使用StyleCop的格式化规则来使代码变得更好和清晰,但我最近遇到了一个警告问题:

所有using指令必须放在命名空间内.

我的问题是我使用指令,程序集引用(用于模拟文件删除),以及在我的一个测试类中使用的命名空间:

using System;
using System.IO;
using Microsoft.Moles.Framework;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[assembly: MoledType(typeof(System.IO.File))]

namespace MyNamespace
{
//Some Code
}
Run Code Online (Sandbox Code Playgroud)

以上允许测试运行正常 - 但StyleCop抱怨使用指令不在命名空间内.

将usings放在命名空间内会产生"MoledType"无法识别的错误.

将usings和程序集引用放在命名空间中会产生错误

'assembly'不是此声明的有效属性位置.此声明的有效属性位置为"type".此块中的所有属性都将被忽略.

似乎我已经尝试了所有的布局,但无济于事 - 要么解决方案不会构建,嘲弄将无效或StyleCop抱怨!

有没有人知道如何设置这些以便一切都快乐?或者在这种情况下我是否必须忽略StyleCop警告?

c# assemblies namespaces using stylecop

6
推荐指数
2
解决办法
6653
查看次数

处理Java字节码中的Try/Catch异常?("堆栈高度不一致")

我试图在java字节码中做一些错误处理.我首先尝试实现一些类似catch的子例程,在那里我将检查错误情况,并跳转到相应的子例程,有点像:

  iconst_1
  iconst_0
  dup
  ifeq calldiverr
  goto enddivtest
calldiverr:
  jsr divError
enddivtest:
  idiv

...More instructions...

divError:
  getstatic java/lang/System/out Ljava/io/PrintStream;
  ldc "Oh dear you divided by 0!"
  invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
Run Code Online (Sandbox Code Playgroud)

上面的问题是当我有多个指令跳转到这个子程序时,我在运行字节码时收到一条错误信息,说堆栈高度不一致.

也许使用例外是解决这个问题的最佳方法?

通过一些谷歌搜索,我发现你可以创建Exception类的实例,并用以下内容初始化它们:

new java/lang/Exception
dup
ldc "exception message!"
invokespecial java/lang/Exception/<init>(Ljava/lang/String;)V
Run Code Online (Sandbox Code Playgroud)

我也发现你可以扔它们,athrow这似乎没问题.

然而令我感到困惑的是如何捕获异常.似乎有一个神奇的"异常表"将异常的抛出和捕获粘在一起,但我不知道如何从头开始编写字节码(以及使用Jasmin进行汇编)时定义其中一个.有人可以告诉我创建异常表的秘诀吗?并且可能给我一个与jasmin汇编的异常处理示例?

java bytecode exception try-catch jasmin

6
推荐指数
1
解决办法
1768
查看次数

带有AS别名的不明确列参考

我不确定在使用别名时如何解决模糊的列引用.

想象一下两个表,a并且b都有一个name列.如果我连接这两个表并为结果添加别名,我不知道如何引用这name两个表的列.我尝试了一些变体,但它们都不起作用:

尝试1

SELECT a.name, b.name
FROM (a INNER JOIN b ON a.id = b.id) AS x
Run Code Online (Sandbox Code Playgroud)

这不起作用,a并且b超出范围.

尝试2

SELECT x.a.name, x.b.name
FROM (a INNER JOIN b ON a.id = b.id) AS x
Run Code Online (Sandbox Code Playgroud)

SQL语法不能像那样工作.

尝试3

SELECT x.name, x.name
FROM (a INNER JOIN b ON a.id = b.id) AS x
Run Code Online (Sandbox Code Playgroud)

那简直太模糊了!

我完全没有想法 - 任何帮助都会非常感激.

sql postgresql alias ambiguous

6
推荐指数
1
解决办法
2万
查看次数

MSTest VS2010 - DeploymentItem将文件复制到不同计算机上的不同位置

我找到了DeploymentItem

[TestClass(), DeploymentItem(@"TestData\")]
Run Code Online (Sandbox Code Playgroud)

在构建测试并在不同计算机上运行时,不会将我的测试数据文件复制到同一位置.

测试数据文件被复制到我机器上测试项目的"bin\debug"目录中,但在我朋友的机器上,它们被复制到"TestResults\name_machine YY-MM-DD HH_MM_SS\Out".

我的机器上的bin\debug目录可以使用以下代码获得:

string appDirectory = 
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
Run Code Online (Sandbox Code Playgroud)

相同的代码将返回TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out我的朋友PC.

然而,这不是真正的问题.问题是我制作的测试数据文件有一个文件夹结构,这个文件夹结构只在我的机器上复制到bin\debug时保留,而在我的朋友机器上只有文件被添加到TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out目录中.这意味着测试将通过我的机器并失败!

有没有办法确保DeploymentItem始终复制到bin\debug文件夹?或者确保在DeploymentItem将文件复制到文件TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out夹时保留文件夹结构的方法?

c# testing unit-testing mstest deploymentitem

5
推荐指数
1
解决办法
3647
查看次数

使用Mono在C#中单击鼠标 - Mac OS

我已经编写了一个应用程序(wpf - 将Mono翻译为Mac吗?),我希望以某种方式移植到Mac OS X.此应用程序涉及使用user32.dll执行鼠标单击(类似这样):

[DllImport("user32.dll")]
    static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
 mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

我听说Mono对于为多个平台制作应用程序很有用 - 有没有办法让我的代码与Mac兼容?

如果没有,有没有办法可以使用相当于user32.dll的Mac来调用鼠标?还有一种方法可以检测程序是在Windows或Mac OS上运行,以选择运行哪些代码?

c# macos mono click mouseevent

5
推荐指数
1
解决办法
1594
查看次数

Android MediaCodec HEVC 支持的分辨率

有谁知道Android MediaCodec在解码HEVC时支持的分辨率是多少?

通过反复试验,我发现以下工作:

640x272
720x304
960x400
1280x528
1920x800
2560x1072
Run Code Online (Sandbox Code Playgroud)

而以下情况则不然:

512x216
3840x1600
Run Code Online (Sandbox Code Playgroud)

有官方文档吗?

android android-ndk hevc android-mediacodec

5
推荐指数
1
解决办法
3836
查看次数