Java拾贝不建议作为0基础学习,都是本人想到什么写什么
throws
在定义一个方法时可以使用throws,表示此方法不处理异常,转而交给方法的调用处进行处理。
public class Test7 {
public static void main(String[] args) {
Math math = new Math();
try {
math.div(10,0);//方法调用处进行处理
}catch (Exception e){
e.printStackTrace();
}
}
}
class Math{
public int div(int i,int j)throws Exception{//抛出异常并且方法中不处理异常
return i/j;
}
}
既然可以使用throws抛出异常,那么main方法抛出异常可以吗?
public class Test7 {
public static void main(String[] args) throws Exception {
//主方法抛出了异常,那么主方法就可以不处理异常。
Math math = new Math();
math.div(10,0);
}
}
class Math{
public int div(int i,int j) throws Exception{
return i/j;
}
}
程序运行结果:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at moudle1.Math.div(Test7.java:13)
at moudle1.Test7.main(Test7.java:6)
虽然main方法可以抛出异常。但main方法作为程序的起点,只能将异常抛给JVM(虚拟机)处理了,这也就到头了。如果说Java有"头"的概念,那JVM就是Java的"头"。
如果在主方法中使用throws,程序出现问题后肯定交给JVM处理,这将会导致程序中断。
throw
可以人为的实例化一个异常对象并使用throw抛出。
public static void main(String[] args) {
try {
new NullPointerException();
}catch (Exception e){
e.printStackTrace();
}
}
上述代码中我们人为的创造了一个异常并捕获处理了。
在finally中,要尽量避免出现throw或return这样的语句。
自定义异常
虽然Java提供了很多异常,难免出现意外情况,至此Java还提供了自定义异常。
public class Test7 {
public static void main(String[] args) {
try {
throw new MyException();//抛出一个自定义的异常
} catch (Exception e) {
System.out.println("捕获自定义的异常");
}
}
}
class MyException extends Exception {//自定义的异常
public MyException() {
super();
}
}
程序运行结果:
捕获自定义的异常
标签:Exception,Java,拾贝,自定义,throws,main,异常,public
From: https://www.cnblogs.com/Ocraft/p/17778149.html