4、throw与throws
shrow:手动抛出异常
语法:throw 异常对象
throw new Exception("异常信息...........");
throw new MyException("自定义异常.........")
throws:声明异常
在定义方法时,同时给方法声明一个异常
public void insert(int i, Object data) throws Exception{
if(i < 0){
throw new Exception("下标不合法");
}
}
通过throws声明异常后,若调用该方法,则需要处理该异常
public void insert(int i, Object data) throws Exception{
if(i < 0){
throw new Exception("下标不合法");
}
}
public void add(int i, Object data){
// 需要处理异常
try{
insert(i, data);
} catch(Exception e){
}
}
所有声明式异常都是检查异常,在编码时,就需要处理,否则语法出错
throw和throws可以同时出现,也可以单独出现,当throw单独出现时,可将throw语句放入try语句中直接进行异常处理;当throws单独出现时,可直接加在方法后面
5、自定义异常
自己写一个异常类型,处理特定异常问题
自定义异常需要继承Throwsable类或者Exception类(通常继承此类)
public class UserException extends Exception{
public UserException(String messgae) {
super(messgae);
}
}
做完自己的异常类后,在需要异常的方法中就可以通过throw语句来抛出该异常,抛出的异常可以直接throws掉让调用方处理或者直接try...catch
掉
public static void main(String[] args) throws Exception{
int i = 5;
if (i > 0){
throw new MyException("错误");
}
}
// 或者
public static void main(String[] args){
int i = 5;
if (i > 0){
try {
throw new MyException("错误");
} catch (MyException e) {
e.printStackTrace();
}
}
}
throw 与 throws区别
throw为手动抛出异常,指运行到该语句就抛出异常,不往下执行,或者可以通过try...catch处理该异常,例如打印日志和异常堆栈信息
throws为声明式异常,在定义时,在方法的后面通过throws 指定异常类型,此时,调用该方法必须去处理该异常