Java fred
Java fred
异常 异常( Exception)? 异常( Exception)是正常程序流程所不能处理 或没有处理的异常情况或异常事件。 在有些书中,异常也称作例外。 例如除数为0
异常 • 异常(Exception)? – 异常(Exception)是正常程序流程所不能处理 或没有处理的异常情况或异常事件。 – 在有些书中,异常也称作例外。 – 例如除数为0
异常产生 自动产生比如:1/0 抛出异常 throw new ArithmeticExceptiono ArithmeticException e=new ArithmeticExceptiono; throw e
异常产生 • 自动产生 比如:1/0 • 抛出异常 – throw new ArithmeticException() – ArithmeticException e=new ArithmeticException(); – throw e;
为什么需要异常? 强制程序异常错误处理 同时指定需要异常的种类 异常处理模型提供了一种统一处理异常/错误的模式 传统程序方法:设置标志位,或返回错误码,分别 处理各种异常情况。但在编程时常常出现这样的情 况:忘了对某些异常情况进行处理,尤其是当存在 多个分支或者多个开发人员共同开发程序时。 简化对异常情况的处理,减少 if-else语句
为什么需要异常? • 强制程序异常/错误处理 – 同时指定需要异常的种类 • 异常处理模型提供了一种统一处理异常/错误的模式 – 传统程序方法: 设置标志位,或返回错误码,分别 处理各种异常情况。但在编程时常常出现这样的情 况:忘了对某些异常情况进行处理,尤其是当存在 多个分支或者多个开发人员共同开发程序时。 – 简化对异常情况的处理,减少if-else语句
什么时候会发生异常? 数组的下标越界 打开不存在的文件 网络无法连接 操作数超出所要求的范围 少了所需加载的类, 自定义异常,要求程序处理
什么时候会发生异常? • 数组的下标越界 • 打开不存在的文件 • 网络无法连接 • 操作数超出所要求的范围 • 少了所需加载的类, • 自定义异常,要求程序处理
处理异常的几种常用方法 旦捕获异常,马上进行处理 2.重新抛出异常 3.捕获异常,但并不处理 4.通过语句 System exitO退出应用程序
处理异常的几种常用方法 1. 一旦捕获异常,马上进行处理 2. 重新抛出异常 3. 捕获异常,但并不处理 4. 通过语句System.exit()退出应用程序
异常处理 在ry语句块中包含可能会产生异常的语句 紧接着若干个 catch语句块,进行异常处理 catch语句块与fnay语句块至少存在一个 ∥可能会抛出异常的代码 catch(ExceptionType ref) ∥异常处理代码 finally
异常处理 • 在try语句块中包含可能会产生异常的语句 • 紧接着若干个catch语句块,进行异常处理 • catch语句块与finally语句块至少存在一个 try { // 可能会抛出异常的代码 } catch (ExceptionType ref) { // 异常处理代码 } finally { // … }
finally语句块 在异常处理过程中,fnay语句块总是 会被执行到:无论有没有异常发生,也无 论有没有异常被捕捉到 可选项: finally语句块,通常位于 catch语句 块的后面 可以用来释放try语句块中获得的资源 例如,关闭在try语句块中打开的文件
finally 语句块 • 在异常处理过程中,finally 语句块总是 会被执行到: 无论有没有异常发生,也无 论有没有异常被捕捉到 – 可选项: finally 语句块,通常位于catch 语句 块的后面 – 可以用来释放try语句块中获得的资源 • 例如,关闭在try语句块中打开的文件
throws列表 在方法的声明处列出所有的受检异常 返回类型方法名参数列表) throws异常类型1,异常类型2 ∥方法体 在本方法内就可以不处理这些异常 调用该方法的方法就必须处理这些异常 示例: public static void g( throws Exception throw new Exception(; }∥方法g结束
throws 列表 • 在方法的声明处列出所有的受检异常 返回类型 方法名( 参数列表) throws 异常类型1, 异常类型2,… { // 方法体 } – 在本方法内就可以不处理这些异常 – 调用该方法的方法就必须处理这些异常 • 示例: public static void g( ) throws Exception { throw new Exception( ); } // 方法g结束
异常处理:捕捉或者-声明 如果一个方法调用一个抛出受检异常的 方法(含有 throws列表的方法),则该方法 必须捕捉这些受检异常,或通过 throws 列表声明这些异常
异常处理: 捕捉-或者-声明 • 如果一个方法调用一个抛出受检异常的 方法(含有throws列表的方法),则该方法 必须捕捉这些受检异常,或通过throws 列表声明这些异常