package com.Base.exception;
public class Demo01 {
public static void main(String[] args) {
try {
new Demo01().test(1,0);
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
//假设这方法中,处理不了这个异常。方法上抛出异常
public void test(int a,int b) throws ArithmeticException{
if (b==0){//主动的抛出异常 throw throws
throw new ArithmeticException();//主动抛出异常,一般在方法中使用
}
}
}
/**
java.lang.ArithmeticException
at com.Base.exception.Demo01.test(Demo01.java:16)
at com.Base.exception.Demo01.main(Demo01.java:6)
**/
package com.Base.exception;
public class Demo01 {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {//try监控区域
System.out.println(a/b);
}catch (ArithmeticException e){//捕获异常
System.out.println("程序出现异常,变量B不能为0");
}finally {//处理善后工作,不管出不出错都会执行
System.out.println("finally");
}
//finally可以不要,但是在IO流中资源关闭可以使用,用于善后工作
try {
new Demo01().a();
}catch (Error e){
System.out.println("程序出现Error");
}catch (Exception e){
System.out.println("程序出现Exception");
}catch (Throwable e){
System.out.println("程序出现Throwable");
}
//假设要捕获多个异常要从小到大捕获
}
public void a(){
b();
}
public void b(){
a();
}
}
/**
程序出现异常,变量B不能为0
finally
程序出现Error
**/
package com.Base.exception;
public class Demo02 {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {
System.out.println(a/b);
} catch (Exception e) {
e.printStackTrace();//打印错误的栈信息
} finally {
}
}
}
package com.Base.exception;
//继承了Exception后就成为了自定义的异常类
public class MyException extends Exception{
//传递数字>10抛出异常
//建立构造器
private int detail;
public MyException(int a ) {
this.detail = a;
}
//toString打印异常信息
@Override
public String toString() {
return "MyException{" +
"detail=" + detail +
‘}‘;
}
}
package com.Base.exception;
public class Test {
//可能会存在异常的方法
static void test(int a ) throws MyException {
System.out.println("传递的参数为:"+a);
if (a>10){
throw new MyException(a);//抛出,也可以选择捕获
}
System.out.println("OK");
}
public static void main(String[] args) {
try {
test(11);
}catch (MyException e){
//增加一些处理异常的代码以减少损失
System.out.println("MyException=>"+e);
}
}
}
/**
传递的参数为:11
MyException=>MyException{detail=11}
**/
原文:https://www.cnblogs.com/sanszoom/p/15115778.html