铭记于心 | ||
---|---|---|
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉 |
java中的异常处理类似于C++,有try catch以及throws两种方式:
使用 throws 声明抛出异常的思路是,当前方法不知道如何处理这种类型的异常,该异常应该由向上一级的调用者处理;
如果 main 方法也不知道如何处理这种类型的异常,也可以使用 throws 声明抛出异常,该异常将交给 JVM 处理。
JVM 对异常的处理方法是,打印异常的跟踪栈信息,并中止程序运行,这就是前面程序在遇到异常后自动结束的原因
这个throws格式是跟在方法的括号后面的
编译时异常必须要进行处理,两种处理方案:try…catch …或者 throws,如果采用 throws 这种方案,将来谁调用谁处理
运行时异常可以不处理,出现问题后,需要我们回来修改代码
方法内语句执行到throw 即停止,将异常抛出,然后程序对异常进行处理
class t extends Exception {}//定义异常类
public class hello {
public static void main(String[] args) throws t {
test();//调用该方法抛出异常给JVM虚拟机,JVM终止程序并进行处理
} /*等价于try {
test();
} catch (com.itheima.t t) {
t.printStackTrace();
}*/
public static void test() throws t {
throw new t();//异常抛出方法
}
} 由于异常类中并没有设置打印的异常信息,所以这里没有异常信息
class t extends Exception {}//定义异常类
public class hello {
public static void main(String[] args) {
try {
test();
} catch (com.itheima.t t) {
System.out.println("也可以这样处理,而用try catch进行处理的方法时处理完都可以继续执行程序");
}
System.out.println("比如说这样就继续执行了异常处理语句后的语句");
}
public static void test() throws t {
throw new t();//异常抛出方法
}
}
自定义异常
也可以这种方式
class Teacher {
void checkScore(int score) {
try{
if (score < 0 || score > 100) {
throw new ScoreException("你给的分数有误,分数应该在0-100之间");
} else {
System.out.println("成绩正常");
}
} catch (ScoreException a)
{
a.printStackTrace();
}
}
}
🌹写在最后💖:
路漫漫其修远兮,吾将上下而求索!伙伴们,明天见!🌹🌹🌹