处理异常的两种方法和自定义异常
处理异常有两种方式:
一:
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);
}
}


浙公网安备 33010602011771号