JAVA异常处理

异常的父类:java.lang.Throwable;
分为:编译时异常;运行时异常;
编译时异常:除(RuntimeException)如:IOException;FileNotFoundException.......
运行时异常:RuntimeException:NullPointException;ArrayIndexOutOfBoundException;
                          ClassCastException;NumberFormatException;...

1、try - catch - finally
try{
   //可能出现异常的代码
}catch(异常类型 变量名){
  //处理异常
  //String getMessage(); //输出异常
  //printStackTrace();   //追溯异常
  e.getMessage();
  e.printStackTrace();
}
finally{
  //可选部分
  //即使前边出现问题,本部分也会执行
  //优先级高于前边的 return
  //主要用于手动资源释放,避免前边代码出现问题不可关闭
}

2、throws + 异常类型  :  写在方法声明处,声明异常(抓)
public void method() throws 异常类型{
  //可能出现异常的代码
  //异常后代码不执行
}
一直向上抛异常,直至main块(方法的调用者),需要在main块中用try - catch 解决

3、如何选择
①子类重写方法抛出的异常不能大于父类方法的异常;父类没有使用throws,子类不可使用throws,只能使用 try - catch
②调用递进关系的方法时,使用throws

4、手动抛出异常(throw):生成异常对象(抛)
if(true){
  //执行代码
}else{
  throw new RuntimeException("手动抛出异常");
}

5、自定义异常类
①继承现有异常:RuntimeException;Exception
②提供全局变量:serialVersionUID(可查看现有异常类)标识异常类
③提供重载构造器
public class MyException extends RuntimeException{
  private static final long serialVersionUID = 12315468743123112L;
  public MyException(){}
}

6、尽量处理编译时异常,运行时异常处理代码

7、面试题
①final/finalize/finally

final为用于标识常量的关键字,final标识的关键字存储在常量池中;final定义基本类型变量时,要求变量初始化必须在声明时或者构造函数中,不能用于其它地方。该关键字定义的常量,除了初始化阶段,不能更改常量的值;final定义对象的引用,该引用的初始化与定义常量时的要求一致;该关键字定义的对象内容可以改变,但是引用指向的地址不能改变;使用final关键字定义的方法,不能被子类继承;

finalize()方法在Object中进行了定义,用于在对象“消失”时,由JVM进行调用用于对对象进行垃圾回收,类似于C++中的析构函数;用户自定义时,用于释放对象占用的资源(比如进行I/0操作);

finally{}用于标识代码块,与try{}进行配合,不论try中的代码执行完或没有执行完(这里指有异常),该代码块之中的程序必定会进行;

②throw/throws:throws:异常处理方式;throw:生成异常对象,抛出异常对象


③String/StringBuffer/StringBuilder

String:不可变类

StringBuffer:可变,线程安全

StringBuilder:可变,线程不安全

 

④ArrayList/LinkedList

ArrayList:查找快

LinkedList: 插入、删除、添加快

 

④HashMap/LinkedHashMap

HashMap:无序

LinkedHashMap:有序

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

localhost1212

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值