/*
* 异常的处理:抓抛模型
*
* 过程1:“抛”,程序在正常执行的过程中,一旦出现异常,就会在对应代码处生成异常类的对象
* 并将该对象抛出。
* 一旦抛出对象以后,其后的代码不再执行
*
* 过程2:“抓”,异常的处理方式:try-catch-finally
* throws
* try-catch-finally的使用
* try{
* //可能出现异常的代码
* }catch(异常类型1 变量名1){
* //处理异常的方式1
* }catch(异常类型2 变量名2){
* //处理异常的方式1
* }
* ...
* finally{
* //一定会执行的代码
* }
* 说明:finally是可选择的
* catch中的异常如果没有子父类关系,则声明顺序随意
* 如果满足子父类关系,子类一定在父类上,否则报错
* 常用的异常对象处理方式:String getMessage(),printStackTrace()
* 在try结构中定义or声明的变量,出了try结构之后不能再次调用(在外声明,在内调用)
* 像数据库连接,输入输出流,网络编程Socket资源,JVM无法自动回收,就需要手动进行资源释放,
* 就得生命在finally当中
*
* 体会1:使用try-catch-finally处理编译时异常,等于把编译时出现的异常延迟到运行时
* 体会2:开发中由于运行时异常比较常见,通常就不针对运行时异常编写try-catch-finally
*
*/
public class ExceptionTest1 {
public void test1(){
String str="123";
str="abc";
try {
int num = Integer.parseInt(str);
System.out.println("Hello1");
}catch (NumberFormatException e){
System.out.println("出现数值转换异常咯!");
}
}
}
/*
*
* 异常处理的方式2:Throws+异常类型
* 使用throws被抛出以后,后续代码不再执行
* try-catch-finally是将真正的异常处理掉了,而throws则是将异常抛出,并没有真正处理掉
* *开发中如何选择try-catch-finally还是throws处理异常?
* 1.如果父类中被重写的方法没有throws方式处理异常,则子类也不能用throws,意味着如果子类中有异常,
* 就只能使用try-catch-finally来处理
* 2.执行的方法中先后又调用了另外的方法,属于递进关系,建议几个方法使用throws的方式处理,而执行的
* 方法A可以使用try-catch-finally进行处理
*/