在delphi中调用DLL时出现异常?

时间:2015-11-08 07:36:46

标签: delphi winapi dll error-handling

我有一个从DLL调用名为[main()]的函数的过程,这是调用者过程:

t1 = Process(target=app.myGUI.mainloop)
t2 = Process(target=counting)

直到所有东西都工作正常,我的意思是在写完DLL的正确路径之后一切正常但没有问题但是如果我在路径参数中写了一个错误的路径(其他文件路径)它会向我显示一个弹出错误,这个是不是一个Win32 DLL,但我不想打扰用户有这种类型的错误,所以我需要一个功能来检查DLL,如果不是那么它会自动再次要求另一个文件而不显示弹出错误?

1 个答案:

答案 0 :(得分:1)

正是您的代码引发了异常。您的代码通过引发异常来明确选择处理错误。您的代码在此处引发了异常:

System.out.println(stud1); // <-- implicitly calls stud1.toString()
System.out.println(stud2);

如果您不想引发异常,请不要使用Win32Check(lib <> 0); 。而是检查Win32Check的值,并通过您认为合适的任何方式处理任何错误。

您对lib的其他使用也存在同样的问题。

当然,您正在使用catch catch异常处理程序吞下所有异常。捕获所有异常处理程序通常是个坏主意。我不明白为什么你把它包括在内。我想你应该把它删除。

因此,如果您在调试器外部运行时看到对话框,则表示系统正在生成对话框。您应该在启动Win32Check时调用SetErrorMode来禁用系统的错误消息对话框。

SEM_FAILCRITICALERRORS

这里解释了有点笨重的双重调用:http://blogs.msdn.com/b/oldnewthing/archive/2004/07/27/198410.aspx