我正在从我的 JavaScript(在我的 Windows 8 应用程序中)调用 C# 代码中的一个函数,该函数从服务中获取一些值并将其返回给 JavaScript。我需要在我的 JavaScript 调用方法中处理 C# 代码引发的错误。如果可能,请告诉我。一个代码示例会很棒。
问问题
323 次
2 回答
2
调用外部库时 WinJS 中的异常以“JavaScript”方式处理。一个例子是:
try {
//Run some code here
TestClassLibrary.Class1.runMe();
}
catch (err) {
//Handle errors here
console.log(err.message);
}
对于简单的 C# 类:
namespace TestClassLibrary
{
sealed public class Class1
{
public static void RunMe()
{
throw new Exception("something is wrong!!");
}
}
}
您将在控制台中收到以下消息:
System.Exception: something is wrong!!
at TestClassLibrary.Class1.RunMe()
注意:确保您的 Class 被标记为seal,并且您的项目输出是WinMD
于 2012-06-20T18:17:32.263 回答
0
您还可以查看在Windows.Networking.Sockets命名空间中实现的错误策略。
他们有一个SocketError 类,它有一个静态方法 getStatus(hresult)并返回一个SocketErrorStatus 枚举。
您可以使用自定义 HRESULT 代码实现自定义异常(但必须为负),例如:
public class TestException : Exception
{
/// <summary>
/// Constructs the exception from a string message
/// </summary>
/// <param name="message">error description</param>
public TestException(String message)
: base(message)
{
base.HResult = -1001;
}
}
您还将提供一个类 TestError ,根据 hresult 将返回您的 TestErrorStatus 枚举的成员,该成员可能如下所示:
namespace TestClassLibrary
{
public enum TestErrorStatus
{
TestError = -1001
}
}
在您的 WinJS 代码中,您将检查:
function (error) {
var errorStatus = TestClassLibrary.TestError.getStatus(error.number);
if (errorStatus == TestClassLibrary.TestErrorStatus.TestError) {
// error is TestException
}
}
于 2013-03-01T12:25:24.233 回答