今天看代码书的时候, 有用到 try--catch--finally, 然后就查了下具体的注意事项和应用.
简单来说就是:
- try {// 有可能出错误的代码或者代码片段}
- catch{
- // 若 try 内代码有误, 此处会获取错误
- }
- finally{
- // 可以没有, 也可以只有一个.
- // 为了保证程序的稳定性, 强制执行的一段程序片;
- // 无论代码是否有错误 / 发生异常, 都会在处理异常结构的最后走这一步
- // 有一种例外情况: 若没有 catch 语句块, 那么 finally 块就是必须的.
- }
try 后必须跟 catch, 不跟是不能通过编译, finally 是强制程序片, 比如强制关闭数据库连接和销毁数据库对象
1, 将预见可能引发异常的代码包含在 try 语句块中.
2, 如果发生了异常, 则转入 catch 的执行. catch 有几种写法:
catch
这将捕获任何发生的异常.
catch(Exception e)
这将捕获任何发生的异常. 另外, 还提供 e 参数, 你可以在处理异常时使用 e 参数来获得有关异常的信息.
catch(Exception 的派生类 e)
这将捕获派生类定义的异常, 例如, 我想捕获一个无效操作的异常, 可以如下写:
- catch(InvalidOperationException e)
- {
- ....
- }
这样, 如果 try 语句块中抛出的异常是 InvalidOperationException, 将转入该处执行, 其他异常不处理.
.net 按照你 catch 的顺序查找异常处理块, 如果找到, 则进行处理, 如果找不到, 则向上一层次抛出. 如果没有上一层次, 则向用户抛出, 此时, 如果你在调试, 程序将中断运行, 如果是部署的程序, 将会中止.
如果没有 catch 块, 异常总是向上层 (如果有) 抛出, 或者中断程序运行.
3,finally
即使在 try 块内用 return 返回了, 在返回前, finally 总是要执行.
如果你不希望在这里处理异常, 而当异常发生时提交到上层处理, 但在这个地方无论发生异常, 都要必须要执行一些操作, 就可以使用 try finally,
return 是可以放在 try 语句块中的. 但不管在什么时机返回, 在返回前, finally 将会执行.
finally 内最好不要有 return, 以防程序提起退出, 返回值不是 try 或 catch 中保存的值.
总结: try--catch--finally,that's all.
来源: http://www.bubuko.com/infodetail-2601342.html