异常处理
异常处理机制
代码
-
public class Demo01 {
public static void main(String[] args) {
int a = 1;
int b = 0;
//假如要捕获多个异常:从小到大!
try {
if (b==0){//throw throws(在方法中抛出)
throw new ArithmeticException();//主动抛出异常
}
System.out.println(a/b);
}catch (Error e){
System.out.println("Error");
}catch (Exception e){
System.out.println("Exception");
}catch (Throwable t){
System.out.println("Throwable");
}finally {//处理善后工作
System.out.println("finally");
}
//finally 可以不要finally.
}
public void a(){b();}
public void b(){a();}
}
-
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
//选中语句ctrl + alt + T,套用try catch finally
try {
System.out.println(a/b);
} catch (Exception e) {
e.printStackTrace();//打印错误的栈信息
} finally {
}
}
}
-
public class Test2 {
public static void main(String[] args) {
try {
new Test2().test(1,0);
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
//假设方法中,处理不了这个异常,可使用throws在方法上抛出异常
public void test(int a,int b) throws ArithmeticException{
if (b==0){
throw new ArithmeticException();//主动抛出异常,一般在方法中使用
}
}
}
自定义异常作用:可以使程序在抛出异常后仍然可以正常运行,处理潜在的程序异常和漏洞。
代码
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 +
'}';
}
}
public class Test3 {
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);
}
}
}