学JAVA第二十天,接触异常处理,自定义异常
1.java.lang.nullpointerexception(经常报)(运行时异常) 属于运行时异常,是编译器无法预知的异常,比如你定义了一个引用变量string a,但是你确没有用new关键字去实例化这个变量,
但是你又调用这个a的方法,所以会报这个空指针异常 解决办法有两种
一,在调用这个变量是判断先if(null!=a)
二,try..catch捕获异常可以让程序继续执行
2.java.lang.classcastexception(转换错误)
3.java.lang.arithmeticexception(运算错误)
4.java.lang.arrayindexoutofboundsexception(越界错误)
5.java.lang.classnotfoundexception(找不到类)通常是 打错字或 环境配置问题,例如classpath或者maven等没下载包成功
6.java.lang.sqlexception(sql语句有异常)
首先,异常分为捕捉异常(try--catch--finally),声明抛出异常(throws),
try{……}会对代码块里面代码进行检查,对可能会生成异常对象进行抛出。
catch{……}这是对try抛出的异常进行处理,代码块写处理代码。
finally{……}这里边的代码是一定会被执行的。通常用于清理与释放资源
其中,今天老师讲的是:自定义异常。其目的是进行分类讨论。
代码:
public class test{ public static void main(string args[]) throws exception{ //学生正常学习, //但有各种异常:1.肚子疼-->>看医生 // 2.呕吐-->>叫前面的同学送医院, // 叫隔壁的同学打扫卫生 // 3.不会做-->>问同学问老师 // 4.睡着了-->>切磋一下 //第一步:定义不同的异常类(extends exception) //try catch()... try{ student s = new student(); s.study();//如果这里发生了异常,try代码段将停止,并把异常给到catch进行处理。其他代码不会停止 system.out.println("学java学得很爽"); } catch(exception e1){ system.out.println(e1.getmessage());吧处理的异常进行打印,方便查看 } system.out.println("程序继续运行1"); system.out.println("程序继续运行2"); system.out.println("程序结束"); } }
public class student{ public void study() throws 肚子疼,呕吐,不会做,睡着了{//这是继承了报告的异常,也就是数可能发生的异常,然后下边要自定义相应的异常类 system.out.println("ok come in"); } public void study(string i) throws 肚子疼,呕吐,不会做,睡着了{ if (i.equals("肚子疼")){ throw new 肚子疼();//找到相应的异常 } if(i.equals("呕吐")){ throw new 呕吐(); } if(i.equals("不会做")){ throw new 不会做(); } if(i.equals("睡着了")){ throw new 睡着了(); } else{
system.out.println("其他异常!!!");
}
}
}
下边的异常都是自定义的
public class 肚子疼 extends exception{//把相应的异常进行处理 private string message = "看医生"; @override public string getmessage(){ return message; } }
public class 呕吐 extends exception{ private string message = "叫前面的同学送医院,叫隔壁的同学打扫卫生"; @override public string getmessage(){ return message; } }
public class 不会做 extends exception{ private string message = "问同学问老师"; @override public string getmessage(){ return message; } }
public class 睡着了 extends exception{ private string message = "切磋一下"; @override public string getmessage(){ return message; } }
可能是我的语言组织能力不太好,有一些相应的细节无法用文字表达出来,还望谅解!!!
出学者,有不对的地方,还望各位大佬指点指点!!!
上一篇: 关于EF数据迁移的个人总结 简单有效