处理异常的两种方法和自定义异常

处理异常有两种方式:

一:

package com.demo28;

public class Test {
	public static void main(String[] args) {
		try {
			System.out.println(1/0);
		}catch(Exception e){
			//e.printStackTrace();//打印错误信息,给程序员看的
			System.out.println("系统出错了,请联系管理员");//给客户看的
		}finally {    //一般做收尾工作
			System.out.println("你好啊,我是finally");
		}
		
	}

}

 

二:处理不了的问题往上抛,

throws表示方法准备要扔出来一个异常
throw表示向外抛出异常
 
package com.demo28;

public class Test1 {
	public static void chu(int a,int b)throws Exception{  //告诉外面,我要扔出来一个错误
		if(b==0) {
			throw new Exception("你不可以给我一个0");//真正的向外抛出一个异常
		}else {
			System.out.println((float)a/b);
		}
	}
	
	public static void main(String[] args) throws Exception {		
		chu(1,2);
				
	}
    
    /*
    public static void main(String[] args)  {
		
		try {
			chu(1,2);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
    */

}

 

  • Exception类中有一个特殊的子类异常RuntimeException(运行时异常),如果在函数内容抛出该异常,函数上不用声明,编译一样通过

 

 

三:自定义异常

package com.demo29;

public class Person {
	String name;
	String gender;
	
	public Person(String name, String gender) {
		this.name=name;
		this.gender=gender;
	}

}
package com.demo29;

public class ZaoTangZi {
	public void nanyushi(Person p) throws GenderException{
		if(p.gender.equals("男")) {   //字符串的判断一定要用equals来判断
			System.out.println("欢迎光临");
		}else {    //来了个女的
			//需要抛出一个异常
			throw new GenderException("性别不对,这里是男澡堂子");
		}
		
	}

}
package com.demo29;

public class GenderException extends Exception{   //自己定义的异常必须继承Exception(普通异常,必须处理的)或者RuntimeException(运行时异常,可以处理可以不处理)
	public GenderException(String msg) {
		super(msg);  //调用父类的构造方法Exception(msg);
	}

}
package com.demo29;

public class Test {
	public static void main(String[] args) throws GenderException{
		Person p1=new Person("张无忌","男");
		Person p2=new Person("赵敏","女");
		ZaoTangZi ztz=new ZaoTangZi();
		ztz.nanyushi(p2);
		
		
	}

}

posted @ 2022-03-20 22:43  SherryYuan  阅读(158)  评论(0)    收藏  举报