- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的任务是为我正在处理的 .NET/C# 项目编写异常处理策略和指南文档。我很难做到。关于如何/何时抛出、捕获、包装异常,有很多可用的信息,但我正在寻找描述除了包装和抛出异常之外的 catch block 内应该进行哪些类型的事情。
try
{
DoSomethingNotNice();
}
catch (ExceptionICanHandle ex)
{
//Looking for examples of what people are doing in catch blocks
//other than throw or wrapping the exception, and throwing.
}
提前致谢
最佳答案
就是这个意思。如果您期望您正在运行的代码抛出异常,并且当该异常被抛出时您的代码知道出了什么问题以及如何继续,然后捕获异常并处理它。
基本上,规则的存在是为了防止像这样的反模式:
try
{
...
}
catch(Exception ex)
{
throw;
}
这里的 catch 只是为展开调用堆栈添加了一个减速带。如果你实际上不想做任何你正在捕获的异常,你甚至不应该为捕获而烦恼。
一个相关但更有效的案例是您不关心抛出的异常,但您需要在所有情况下进行清理。在那种情况下,跳过捕获;您不需要它,只需将其设为 try-finally block 即可。
编辑:要回答帖子中的问题,而不仅仅是主题,您可以编写如下规则:“不要编写不执行任何操作或仅重新抛出捕获的异常的 try-catch 语句。所有捕获语句应该执行一些与抛出的异常相关的增值操作。”
例如,假设您尝试使用用户在登录您的应用程序时提供的凭据连接到 SQL Server 实例。很多事情都可能出错,有些是您无法预料到的,有些是您应该预料到的。
所有这些示例都涉及首先捕获已知类型的异常并询问它以查看到底出了什么问题,然后执行一些可以让程序继续执行的已知操作。目的是防止应用程序在出现您知道可能出错但知道如何在这种情况下保持程序运行的错误时崩溃和燃烧。
捕获异常的基本规则:
关于c# - "Only catch exceptions you can handle"到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673860/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!