* 结构: * try{ * 可能出现异常de代码段 * }catch(可能出现的异常){ * 解决办法 * } |
* try-catch的执行顺序: * 1、执行try块中的代码块 如果出现异常 * 2、通过出现的异常去匹配 catch中声明的异常类型 * 3、如果匹配成功 执行catch中的代码块 如果匹配失败 jvm处理当前异常信息 (终止程序 输出异常信息) * 4、继续执行剩下的代码 |
|
PS:只能处理一种异常信息。 |
* 结构: * try{ * 可能出现异常的代码 * }catch(异常类型1 e1){ * 解决方案1 * }catch(异常类型2 e2){ * 解决方案2 * }catch(异常类型3 e3){ * 解决方案3 * }。。。。{ * } |
* 执行顺序: * 1、执行try块 如果出现异常 * 2、以此匹配多重catch中声明的异常 * 3、如果匹配成功 执行当前匹配成功的catch块 try-catch块执行完毕 继续执行下面的代码 * 4、如果匹配失败 交由jvm处理 程序终止 输出异常信息 * 5、一般情况下我们都会在最后一个catch中加入Exception 获取可能没有捕获的异常信息 |
|
PS:
* e.getMessage() -->获取异常的原因藐视 * e.printStackTrace() -->打印异常的出现行数以及异常的全限定名* e.toString --> 异常的全限定名 |
* 结构: * try{ * 可能出现异常的代码 * }catch(异常类型1 e1){ * 解决方案1 * }catch(异常类型2 e2){ * 解决方案2 * }catch(异常类型3 e3){ * 解决方案3 * }。。。。{ * }finally{ * 代码块 * } |
* 执行顺序: * 1、执行try块 如果出现异常 * 2、以此匹配多重catch中声明的异常 * 3、如果匹配成功 执行当前匹配成功的catch块 执行finally代码块 try-catch-finally块执行完毕 继续执行下面的代码 * 4、如果匹配失败 交由jvm处理 程序终止 输出异常信息 也会执行finally代码块 * 5、一般情况下我们都会在最后一个catch中加入Exception 获取可能没有捕获的异常信息 * 6、一般情况下通过finally去关闭连接资源 |
|
PS: |
|
* 注意格式: * 方法() throws 异常类型1,异常类型2。。。{} |
|
|
throw new 异常类型(); PS:抛出异常是在方法内部编写的 |
|
|
* 如何自定义异常: * 1、创建一个类 让当前类要么继承Exception 要么继承RuntimeException * 2、编写当前类的构造器 : * a、一定要写空构造器 * b、一定要写一个带异常原因描述的构造器 (带一个String参数的构造器) * 3、在构造器内部通过super()调用父类的构造器即可 |
|
|