首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在控制台应用程序中从哪里打印IO错误消息?

在控制台应用程序中从哪里打印IO错误消息?
EN

Software Engineering用户
提问于 2016-06-14 00:03:28
回答 1查看 383关注 0票数 2

我正在编写一个简单的控制台应用程序来重命名一堆文件/文件夹,我想设计这个控制台应用程序尽可能的模块化。

控制台应用程序非常简单:询问用户源文件夹路径是什么,将文件夹重命名为什么,然后用户按enter键。然后应用程序找到文件夹,并开始递归地重命名子文件夹中的所有文件/文件夹。

如果出现用户要键入不存在的文件夹路径的情况,那么在某个时候,我希望应用程序将“无法找到文件夹”打印给用户。这就是我的问题所在:这条错误信息应该打印在哪里?我可以想到几种选择:

  1. 在调用RenameFolder(string folderPath, string newName)调用之前检查文件夹是否存在。打印此文件夹中的错误信息“存在”检查。
  2. 继续,立即调用RenameFolder(string folderPath, string newName),但是如果它没有在该函数中找到一个文件夹,则返回一些错误代码或枚举,表示它找不到该文件夹。然后调用方将识别此枚举并打印错误消息。
  3. 在函数的开头放一个断言。如果断言失败,则打印错误消息。注意,如果assert触发,这将停止程序执行。
  4. 在函数的开头放置一个if语句,检查文件夹是否存在,如果不存在,则在该检查中打印错误消息并返回。
  5. 在函数中放入try/catch,抛出异常,然后在catch语句中打印错误消息,然后返回。

我无法决定如何创建最“模块化”的代码。你的人有什么想法?

EN

回答 1

Software Engineering用户

发布于 2016-06-14 00:19:18

1、3和4存在一个问题:在检查和尝试打开文件夹之间可以删除该文件夹。或者网络可能会死,或者权限可能会妨碍等等。与文件系统交互是外生例外的一个很好的来源。

选择2到5之间,C#风格通常是为了避免返回错误代码,所以我不推荐2。选项5很好,特别是对于一个小程序,但是您可能希望将异常抛给调用方,并使用户交互远离您的程序逻辑。

所以最后的流程可能是这样的:

代码语言:javascript
复制
var filename = GetFilename();
var newFilename = GetTarget();

try
{
    renameFile(filename, newFilename);
}
catch (IOException e)
{
    PrintError(e);
}
票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/322162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档