代码例子:
package Demo01;
public Application{
public static void main(String[] args){
try{
new Application().test(10,0);
}catch(ArithmeticException e){
e.printStackTrace();
}
}
//假设这个方法处理不了这个异常,则我们可以在方法中抛出这个异常
public void test(int a,int b) throws ArithmeticExceptio{
if(b==0){
throw new ArithmeticException(); //主动抛出一个异常,一般在方法中使用
}
}
}
代码例子:
package Demo02;
public Application{
public static void main(String[] args){
int a=666;
int b=0;
try{
System.out.println(a/b); //要执行的代码块
}catch(ArithmeticException e){ //此处的e可以自己定义,而e旁边的则为想要捕获的类型
System.out.println("程序出现异常,b不能为0"); /*如果上面的代码块出现异常,其程序自己抛出异常后,将会被此处代码块捕获异常,并在此处处理异常,然后往后执行*/
}finally{
System.out.println("我无论如何都会出来"); //finally关键字代表此代码块无论上面的代码是否有异常都会执行
}
}
}
/*
输出内容:
程序出现异常,b不能为0
我无论如何都会出来
*/
上述两个例子都是JAVA里面内置的拥有的异常类,通常情况下这些异常类可以应对我们生活中的大部分事物。但是还有一种异常时用户可以自定义的,在自定义异常的时候只需要继承Exception类即可。
用户在程序中使用自己定义的异常类大体可以分为以下几个步骤:
1. 创建自定义异常类。
2. 在方法中通过throw关键字抛出异常对象
3. 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
4. 在出现异常方法的调用者中捕获并处理异常。
代码例子:
package Demo03;
//自定义异常类
public class OwnException extends Exception{
private int detail;
public OwnException(int a){
this.detail=a;
}
//toString用于对异常信息的打印
@Override
public String toString(){
return "OwnException{"+"detail="+detail+"}";
}
}
public class Test {
//书写一个可能存在异常的代码块
static void test(int a) throws OwnException{
System.out.println("传递的参数为"+a); //传递一个参数a
if(a>10){
throw new OwnException(a); //此处可以选择捕获或者抛出异常,我这里选择的是抛出
}
System.out.println("it is fine"); //如果没有出现异常则输出 it is fine 此句
}
public static void main(String[] args){
try{
test(1); //在main方法中运行test,此处a=1,不会触发异常
}catch(OwnException e){
//此处还可以添加一些处理异常的代码
System.out.println("OwnException>>"+e); //捕获异常并输出异常
}
}
}
/*
输出内容为:
it is fine
*/
对实际应用的总结:
原文:https://www.cnblogs.com/starocean/p/14802726.html