public static void main(String[] args) {
int a = 4;
int b = 0;
try { //监控异常区
System.out.println(a/b);
new Test().a();
}catch (ArithmeticException e){ //捕获异常
System.out.println(e);
System.out.println("程序出现异常,变量b不能为0");
}catch (StackOverflowError o){
System.out.println("栈溢出");
}catch (Throwable t){
System.out.println(t);
System.out.println("出现异常");
}
finally { //处理善后工作
System.out.println("finally");
}
}
// 栈溢出异常
public void a(){b();}
public void b(){a();}
2.抛出异常
public static void main(String[] args) {
int a = 4;
int b = 0;
// Ctrl+Alt+T快捷键打出try watch
try {
if (b == 0){ //主动抛出异常 throw throws
throw new ArithmeticException(); //主动抛出异常
}
System.out.println(a/b);
} catch (ArithmeticException e) {
// e.printStackTrace();
System.out.println("程序异常");
System.exit(1); //结束VM虚拟机 Process finished with exit code 1
} finally {
System.out.println("结束VM虚拟机 Process finished with exit code 1");
}
}
public static void main(String[] args) {
int a = 4;
int b = 0;
try {
new Test3().test(2,0);
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
// 假设这个方法中 处理不了这个异常 那就方法上抛出异常
public void test(int a,int b) throws ArithmeticException{
/*if (a == 0){
throw new ArithmeticException(); //抛出异常, 一般在方法中使用
}*/
System.out.println(a/b);
}
3.自定义异常
/*
自定义异常
*/
public class Test4 extends Exception {
public Test4(){}
public Test4(String message){
super(message);
}
}
class Test5{
public void test(int score) throws Test4{
if (score<0 || score>=100){
throw new Test4("你给的分数有异常,应该在1-100之间");
}else {
System.out.println("分数正常");
}
}
}
class Demo {/*
public static void main(String[] args) throws Test4 {
Scanner sr = new Scanner(System.in);
System.out.println("请输入分数:");
int score = sr.nextInt();
new Test5().test(score);
}*/
}
class Demo2 {
public static void main(String[] args) {
Scanner sr = new Scanner(System.in);
System.out.println("请输入分数:");
int score = sr.nextInt();
Test5 t5 = new Test5();
try {
t5.test(score);
} catch (Test4 e) {
e.printStackTrace();
}
}
}