Skip to content

Commit 54dc74e

Browse files
committed
fix: 预期中的错误
1 parent 0927041 commit 54dc74e

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

simple_xml.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ std::wstring UTF82UTF16(const std::string& str)
2323
return L"";
2424
}
2525

26-
size_t size_needed = MultiByteToWideChar(CP_UTF8, 0, str.data(), str.size(), nullptr, 0);
26+
auto size_needed = MultiByteToWideChar(CP_UTF8, 0, str.data(), static_cast<int>(str.size()), nullptr, 0);
2727

2828
if (size_needed <= 0)
2929
{
3030
return L"";
3131
}
3232

3333
std::wstring ret(size_needed, 0);
34-
MultiByteToWideChar(CP_UTF8, 0, str.data(), str.size(), ret.data(), size_needed);
34+
MultiByteToWideChar(CP_UTF8, 0, str.data(), static_cast<int>(str.size()), ret.data(), size_needed);
3535
return ret;
3636
}
3737

task_sched.cpp

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,18 @@ BOOL TryInvoke(F&& func, LPCWSTR msg)
2323
return S_OK;
2424
}
2525

26-
// 尝试执行一个步骤
26+
// 尝试执行一个步骤,如果错误就抛出
2727
#define TryStep(func, msg) \
2828
do { auto r = TryInvoke([&] { return func; }, msg); if (r) { return FALSE; } } while (0);
2929

30+
// 不执行func, 直接抛出错误
3031
#define ErrThrow(msg) \
3132
do { TryInvoke([&] { return E_FAIL; }, msg); return FALSE; } while (0);
3233

34+
// 预期中的错误, 不抛出错误,直接return一个返回值
35+
#define ExpectedErr(func, ret) \
36+
do { if (FAILED(func)) { return ret; } } while (0);
37+
3338

3439
std::wstring defaultTaskName()
3540
{
@@ -286,11 +291,8 @@ namespace TaskSched
286291
TryStep(hr, L"COM组件:连接ITaskService失败");
287292

288293
hr = p_service->GetFolder(CComBSTR(TASK_SCHED_FOLDER), p_task_folder.AsOutPtr());
289-
if (FAILED(hr))
290-
{
291-
// 断言文件夹不存在,不需要删除任务
292-
return TRUE;
293-
}
294+
// 尝试删除一个不存在文件夹,失败是预期
295+
ExpectedErr(hr, TRUE);
294296

295297
{
296298
COMPtr<IRegisteredTask> p_exist_reg_task(nullptr);
@@ -326,17 +328,14 @@ namespace TaskSched
326328
p_service.AsOutVoidPtr())
327329
, L"COM组件TaskScheduler:创建失败");
328330

329-
// Connect to the task service.
330331
hr = p_service->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t());
331332
TryStep(hr, L"COM组件:连接ITaskService失败");
332333

333-
// ------------------------------------------------------
334-
// Get the TrafficMonitor task folder.
335334
hr = p_service->GetFolder(CComBSTR(TASK_SCHED_FOLDER), p_task_folder.AsOutPtr());
336-
TryStep(hr, L"COM组件:获取ITaskFolder失败");
335+
// TryStep(hr, L"COM组件:获取ITaskFolder失败");
336+
// 默认情况任务未创建:GetFolder 失败是预期行为
337+
ExpectedErr(hr, TRUE);
337338

338-
// ------------------------------------------------------
339-
// If the task exists, disable.
340339
{
341340
COMPtr<IRegisteredTask> p_exist_reg_task(nullptr);
342341
hr = p_task_folder->GetTask(CComBSTR(wstrTaskName.c_str()), p_exist_reg_task.AsOutPtr());

0 commit comments

Comments
 (0)