,关于vb.net异常处理的疑问
求助,关于vb.net错误处理的疑问
在vb.net中错误处理通常使用
Try
Catch ex As Exception
End Try
这种结构来捕获和处理错误,网上也有很多例子来解释相关语法.
在实际使用的时候我有些疑惑
如果我不知道某代码是否会发生错误,而我又不想发生错误时崩溃,那么我就要加上try catch.
可是事实上,程序所有的代码都无法100%确定是没有问题的,所以我为所有的代码都加上了try catch
请问我以上的想法是否正确?,如果我想要让我的程序能够应对各种可能出现的错误,是不是真的需要在所有位置都加上try catch?
------解决方案--------------------
不需要,只要在Main方法,或者最顶层调用中try catch就可以避免程序“崩溃”了。因为遇到异常没有处理,它会向上一层调用抛出,一级一级向上,只有最顶层的调用仍然没有处理,才会使得程序终止。
对于编写类库和可以重用的代码组件来说,仅仅处理自己能处理的异常,丢出自己不能处理的和预见不到的异常才是最佳的实践。
------解决方案--------------------
这么用的话很没意思啊,首先要尽量理想状态运行时确保没有错误,然后在有可能发生意外的地方,或者是无法确保总能成功的地方try一下,可能还要在catch里写上应对,这样才比较好吧。
比如打开串口时,串口的数据就算自己已经确保无误,但是有可能因为其他程序正占用串口导致无法打开,这样就应该用try来打开串口,然后catch里弹个msgbox向用户说明下串口打开失败或者具体到串口被占用还是怎样之类的错误信息。如果整体加个try,程序出什么问题了都不知道哪的错,反正整体就被跳过去了,没啥意义啊,毕竟写程序是为了完成功能不是为了不出错
在vb.net中错误处理通常使用
Try
Catch ex As Exception
End Try
这种结构来捕获和处理错误,网上也有很多例子来解释相关语法.
在实际使用的时候我有些疑惑
如果我不知道某代码是否会发生错误,而我又不想发生错误时崩溃,那么我就要加上try catch.
可是事实上,程序所有的代码都无法100%确定是没有问题的,所以我为所有的代码都加上了try catch
请问我以上的想法是否正确?,如果我想要让我的程序能够应对各种可能出现的错误,是不是真的需要在所有位置都加上try catch?
------解决方案--------------------
不需要,只要在Main方法,或者最顶层调用中try catch就可以避免程序“崩溃”了。因为遇到异常没有处理,它会向上一层调用抛出,一级一级向上,只有最顶层的调用仍然没有处理,才会使得程序终止。
对于编写类库和可以重用的代码组件来说,仅仅处理自己能处理的异常,丢出自己不能处理的和预见不到的异常才是最佳的实践。
------解决方案--------------------
这么用的话很没意思啊,首先要尽量理想状态运行时确保没有错误,然后在有可能发生意外的地方,或者是无法确保总能成功的地方try一下,可能还要在catch里写上应对,这样才比较好吧。
比如打开串口时,串口的数据就算自己已经确保无误,但是有可能因为其他程序正占用串口导致无法打开,这样就应该用try来打开串口,然后catch里弹个msgbox向用户说明下串口打开失败或者具体到串口被占用还是怎样之类的错误信息。如果整体加个try,程序出什么问题了都不知道哪的错,反正整体就被跳过去了,没啥意义啊,毕竟写程序是为了完成功能不是为了不出错