C#的异常处理机制中try块和catch块都是必不可少的,finally块是可以省略的 这句话对不对?
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/23 10:16:55
C#的异常处理机制中try块和catch块都是必不可少的,finally块是可以省略的 这句话对不对?
从C#的语法角度上讲是错误的... catch和finally至少声明其一就可以通过编译
不过实际业务处理中 try通常和catch匹配 这取决于具体的场合因为finally是“一定”会执行的 如果你想跑完一段语句后 无论是否异常都执行下一段代码 则需要finally的支持 比如如下的伪代码:var conn = new connection()
try {
conn.open();
conn.executeCommand(); //这里有可能会出现异常
} finally {
conn.close();
conn.dispose();
}这段语句执行时 如果中间发生异常 close和dispose依然会正确的执行 然后抛出异常 这就是隐藏了catch段不过更好的书写方式通常是这样:var conn = new connection()
try {
conn.open();
conn.executeCommand(); //这里有可能会出现异常
} catch (Exception) {
throw; //这里直接写throw 保持了异常出现原有的调用栈 这是区分throw ex;的写法
} finally {
conn.close();
conn.dispose();
}即使不catch直接抛出 最好也要主动的声明出来 避免语义上的混淆并且增强代码可读性——后面的人可不知道你是不想catch还是忘记catch.
当然 如果你不需要finally这种特性 只要使用try catch就够了 也没有问题
不过实际业务处理中 try通常和catch匹配 这取决于具体的场合因为finally是“一定”会执行的 如果你想跑完一段语句后 无论是否异常都执行下一段代码 则需要finally的支持 比如如下的伪代码:var conn = new connection()
try {
conn.open();
conn.executeCommand(); //这里有可能会出现异常
} finally {
conn.close();
conn.dispose();
}这段语句执行时 如果中间发生异常 close和dispose依然会正确的执行 然后抛出异常 这就是隐藏了catch段不过更好的书写方式通常是这样:var conn = new connection()
try {
conn.open();
conn.executeCommand(); //这里有可能会出现异常
} catch (Exception) {
throw; //这里直接写throw 保持了异常出现原有的调用栈 这是区分throw ex;的写法
} finally {
conn.close();
conn.dispose();
}即使不catch直接抛出 最好也要主动的声明出来 避免语义上的混淆并且增强代码可读性——后面的人可不知道你是不想catch还是忘记catch.
当然 如果你不需要finally这种特性 只要使用try catch就够了 也没有问题
c#描述异常处理语句try、catch、finally执行时的相互关系
若catch中抛出运行时异常,请问在try catch语句块中return语句是写在try中还是写在try catch语
C#程序中,可使用try.catch机制来处理程序出现的()错误 A.语法 B.运行 C.逻辑 D.拼写
使一个铜块温度升高时,铜块的密度将变小.这句话对不对
312. 在Java中,关于捕获异常的语法try-catch-finally的下列描述正确的是哪个项目?(选择2项)
程序中有try-catch-finally结构,finally之后还有return,假如try中有异常,finally和
c# try-catch 语句的含义和用法
三块钢板共重1026千克,第一块的质量是第二块的千倍,第三块和第一块一样重,第二块重多少千克
足球的表面有黑皮块和白皮块白皮块和黑皮块的比是2:3.一共有32块.黑皮块和白皮块各是多少块
三块钢板共重1026千克.第一块的重量是第二块的4倍,第3块和第一块一样重.这3块钢板各多少千克?
三块钢板共重1026千克,第一块是第二块的4倍,第三块和第一块一样重,这三块钢板各重多少千克?
小明用火炉给一块铝块加热,在铝块温度逐渐升高的过程中,铝块的质量`体积和米度的变化情况是?