![]() |
1
44
我能想很多。 首先阅读我的文章,将异常分类为 烦恼的 , 笨头笨脑的 , 致命的 和 外源性 : http://ericlippert.com/2008/09/10/vexing-exceptions/ 一些常见错误:
http://blogs.msdn.com/ericlippert/archive/2004/09/01/224064.aspx |
![]() |
2
25
重新引发这样的异常:
这会杀死堆栈跟踪,使其更不可用。正确的重排方式如下:
|
![]() |
3
12
捕获所有异常在许多情况下,您应尝试捕获特定的异常:
而不是:
例外情况应从最具体到最少排序。 |
![]() |
4
10
用无意义的消息重新引发异常。
你不会相信我在生产环境中经常看到这样的代码。 |
![]() |
5
9
没有人在谈论看到像这样的空捕获块……
也不要使用异常处理来创建替代方法流…
|
![]() |
6
7
不使用
在调用MyFile的终结器(可能永远不会调用)之前,不会关闭MyFile,因为之前引发了异常
正确的方法是
编译器会将其翻译为如下内容:
所以即使面对异常,文件也会关闭。 |
![]() |
7
6
当重新引发捕获的异常时,忘记设置内部异常
当我发布这个答案时,我忘记了提到我们应该总是考虑什么时候包括内部异常,或者不是出于安全原因。AS Eric Lippert 指出 another answer for this topic ,一些异常可以提供有关服务器实现详细信息的敏感信息。因此,如果将要处理异常的调用者不受信任,那么最好包括内部异常信息。 |
![]() |
8
4
空渔获量:
再投掷:
|
![]() |
9
3
假设一个包含许多场景的异常是特定的。真实场景是一个Web应用程序,在该应用程序中,异常处理始终假定所有错误都是会话超时,并在会话超时时记录和报告所有错误。 另一个例子:
|
![]() |
10
3
记录exception.message而不是exception.toString()。 很多时候,我看到代码只记录异常消息,而它应该记录toString方法的返回。ToString提供了更多关于异常的信息,而不是消息。除了消息之外,它还包含诸如内部异常和堆栈跟踪之类的信息。 |
![]() |
11
1
试图抓住 OutOfMemoryException 或 StackOverflowException -这些会导致运行时关闭,因此可以从同一进程(甚至从整个CLR)中捕获它们。
|
![]() |
12
1
未能在catch处理程序中捕获可能的异常。这可能导致错误的异常向上传播。 例如:
如果发生了什么
|
![]() |
13
0
错误的
更好
|
![]() |
14
0
对正常流控制使用异常。例外情况应例外。如果是一个好的/预期的操作,使用返回值等。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |