在我们的程序运行时经常会出现一些 *** 作会使我们的程序无法继续运行下去,用户的非正常输入或者程序本身逻辑上的错误等,这些都会导致我们程序无法继续进行下去,但我们想要这个程序继续执行,就需要进行处理。
1.1.在java中,运行时的错误会作为异常抛出,异常是一种对象,为了让程序继续进行,我们就需要处理这个异常,让我们的程序继续进行或者按照我们的想法停止。
1.2.异常作为一种对象,让我们来看看它的类型,异常类在java.lang.Throwable.其中Error类型的属于jvm虚拟机的错误无法通过人为的程序处理,而Exception类别的你可以进行 *** 作,也可以叫异常。
2.异常处理:
2.1.实现:
- 声明一个异常
- 抛出一个异常
- 捕获一个异常
声明一个异常就是在你觉得可能会有异常出现的地方显示异常,就像一个账户密码输入,用户可能输入负数这时不可能让程序停止就要显示必检异常(非必检异常RuntimeException和子类就不用显示)。
void method()throws Exception1,Exception2···{
}
然后抛出异常(可以自己写一个异常类抛出来)(声明是用throws,抛出是用throw)
throw new xxxException();
/*或者这样写*/
xxxException ex=new xxxException();
throw ex;
每个异常类都有两个以上的构造方法(用于描述异常),一种就是带有String参数的构造方法来描述,该String参数被称为异常消息,可以用getMessage()获取。异常中的如图:
throw new xxxException("this is a exception");
捕获异常我们通常用try-catch来捕获:
try {
int vaule=30;
Test ts=null;
/*这里NullPointerException*/
/*从这发现后,后续程序就不再执行了,就跳到catch部分*/
ts.hashCode();
if(vaule<40) {
int i=1;
int j=0;
/*这里是ArithmeticException*/
i=i/j;
}
/*多个异常时可以多个catch,但只会来到其中一个catch,同时
Exception类的要放最后,否则不管抛出的是啥异常都会
自动类型转换成Exception类型被catch*/
}catch(NullPointerException ex) {
System.out.println(ex.getMessage());
}
catch(Exception ex) {
System.out.println(ex.getMessage());
}
最后还有一个还可以加个fianlly{ },fianlly中的语句是必须执行的(除了jvm中断,System.exit()导致程序中止)
try{
statement1;
}catch(Exception ex){
statement2;
}fially{
statement3;
}
3.重抛异常和自定义异常
3.1.重抛异常
catch块在捕获异常后无法处理就重新抛出一个新的异常或者重新抛出这个异常给更上一层次的处理器处理
try{
statement1;
}catch(Exception ex){
statement2;
throw ex
}
static void method1(){
try{
method2();
}
}catch(Exception ex){//接受从method2抛出
}
static viod method2(){
try{
statement;//产生一个异常
}catch(Exception ex){//无法处理
throw new Exception();//抛给method1
}
3.2.自定义异常:
就是通过继承于java.lang.Exception来重写方法变成自己所要的,不过不太建议自定义。
异常处理可以很好的帮助程序运行和代码改正。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)