1) A classe Exception se divide em ApplicationException e SystemException (esta última contendo OutOfMemoryException, IOException, NullReferenceException, etc.).
2) O objeto-exceção declarado na cláusula catch é read-only.
3) O código abaixo dá erro (duas cláusulas catch genéricas):
try{}
catch {}
catch {}
4) Um catch mais genérico não pode vir antes de um catch menos genérico (caso contrário um erro de compilação ocorre).
5) É possível fazer rethrown de exceções da seguinte maneira:
catch (Exception) {throw;}
6) Mesmo que haja, no bloco try, um throw, break, continue ou goto, o código do finally é sempreexecutado.
7) Se tanto a cláusula try como a finally lançarem exceções, a exceção da try é perdida; apenas a exceção da finally é realmente lançada.
8) O erro de compilação "Control cannot leave the body of a finally clause" acontecerá caso um bloco finally contenha:
a) return ou
b) break/continue/goto que transfira o fluxo de execução para fora do bloco finally.
9) Por padrão, não é lançada uma exceção na ocorrência de overflow aritimético. Entretanto, é possível colocar comandos em um bloco checked para forçar o lançamento de OverflowException no caso de overflow aritimético.
10) A opção de compilação /checked+ habilita globalmente a checagem de overflow aritimético, enquanto a opção /checked- desabilita globalmente a checagem de overflow aritimético. Um bloco checked dá a última palavra, mesmo que /checked- seja informado ao compilador. Da mesma forma, é possível usar um bloco unchecked para ignorar checagem de overflow aritimético mesmo que a opção /checked+ seja passada ao compilador.
11) Além de blocos checked/unchecked, existem expressões checked/unchecked. Por exemplo: checked(++number).
[]s
-- AFurtado