关于throw new Exception 和try ...catch(Exception) finally 的解释
何时用throw 何时用try
在JAVA中,有些方法会显示的声明抛出某种类型的异常,要求调用者必须处理该类型的异常
.NET中虽然没有显示的声明,但也有类似的机制。
异常也是一种消息的机制,用于通知调用者方法内发生了某种类型的异常。
异常的捕获try,catch是捕获消息,并作出相应的处理。
一般建议,在一些公共的方法,或者是逻辑比较复杂的方法内部发生错误的时候一定要使用throw将异常抛出,让调用者知道。
当然还有一种实现方式就是传统的C/C++的实现方式,就是使用返回码,但这个已是过时的技术,至少在,NET/JAVA等语言上。
例如 func(A,B,C)
方法内部如果出现错误,如果通知调用者?那么我们选择使用throw 一个自定义的runtime Exception 来通知,那么调用者就可以catch到这个Exception 并根据Exception的ErrCode进行相应的处理,同样处理结束也可以将错误继续向外抛出,如果当前的调用者也是一个方法需要通知上层调用者的话。
try...catch(Exception ) finally
是JAVA/C# 中用于异常捕获的方法,try部分是代码执行的部分,当代码中出现catch中指明的类型异常将进入catch体内执行相应的代码。catch的类型可以是异常的基类型,那么将捕获一切集成于该基类型的异常。
catch(AException){} catch(BException) ...可以使用多个catch块,捕获多种类型的异常。
finally:当try或者catch语句执行结束后一定会执行到finally部分,无论你是否在try或catch中使用了return。finally的主要作用是用于释放一些资源,例如非托管的资源 IO/数据库连接等等,避免造成内存泄漏。
在JAVA中,有些方法会显示的声明抛出某种类型的异常,要求调用者必须处理该类型的异常
.NET中虽然没有显示的声明,但也有类似的机制。
异常也是一种消息的机制,用于通知调用者方法内发生了某种类型的异常。
异常的捕获try,catch是捕获消息,并作出相应的处理。
一般建议,在一些公共的方法,或者是逻辑比较复杂的方法内部发生错误的时候一定要使用throw将异常抛出,让调用者知道。
当然还有一种实现方式就是传统的C/C++的实现方式,就是使用返回码,但这个已是过时的技术,至少在,NET/JAVA等语言上。
例如 func(A,B,C)
方法内部如果出现错误,如果通知调用者?那么我们选择使用throw 一个自定义的runtime Exception 来通知,那么调用者就可以catch到这个Exception 并根据Exception的ErrCode进行相应的处理,同样处理结束也可以将错误继续向外抛出,如果当前的调用者也是一个方法需要通知上层调用者的话。
try...catch(Exception ) finally
是JAVA/C# 中用于异常捕获的方法,try部分是代码执行的部分,当代码中出现catch中指明的类型异常将进入catch体内执行相应的代码。catch的类型可以是异常的基类型,那么将捕获一切集成于该基类型的异常。
catch(AException){} catch(BException) ...可以使用多个catch块,捕获多种类型的异常。
finally:当try或者catch语句执行结束后一定会执行到finally部分,无论你是否在try或catch中使用了return。finally的主要作用是用于释放一些资源,例如非托管的资源 IO/数据库连接等等,避免造成内存泄漏。

浙公网安备 33010602011771号