重点:
异常的概念
异常处理机制
难点:
try-catch-finally(掌握)
throw、throws关键字 (了解)
目录
1、异常处理概述
什么是异常:
异常就是在程序的运行过程中所发生的意外事件,它中断指令的正常执行。
Java中提供了一种独特的处理异常的机制,通过异常来处理程序设计中出现的错误。
为什么使用异常处理:
将出错处理和正常代码分开。增加程序的可读性。
在Java中,处理这种情况的方法是利用异常处理,把出错处理和正常代码分开,Java异常处理通过5个关键字try,catch,finally,throw和throws进行管理。
//传统方法
makeFriends( ) {
上交友网站注册信息;打不开咋办?
寻找合适对象;没有合适的对象咋办?
预约见面;没有成功咋办?
交谈甚欢;没有共同语言咋办?
互留电话; 不留电话咋办?
}
解决方法:写大量的if语句。
//Java解决方法
makeFriends( ) {//结构清楚,无需自己判断,代码量小。
try {
上交友网站注册信息;
寻找合适对象;
预约见面;
交谈甚欢;
互留电话;
}
catch (网站注册失败) {
处理代码; }
catch (寻找合适对象失败) {
处理代码; }
catch (约会失败) {
处理代码; }
catch (交谈失败) {
处理代码; }
catch (互留电话失败) {
处理代码; }
}
2、常见异常及其用途
![这里写图片描述](https://img-blog.csdn.net/2018082115444539?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dvX09uXw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
3、java程序对异常的两种处理方式
1)捕获异常(try/catch/finally):就地解决,并使程序继续执行。
举例如下:
public class ExceptionTest1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
int a=3/0;
}catch(Exception e){
System.out.println(e);
}finally{
System.out.println("this is final sentence.");
}
}
}
//输出结果:
java.lang.ArithmeticException: / by zero
this is final sentence.
2)声明抛弃异常 即 自定义异常类(throws/throw):将异常向外转移,即将异常抛出方法之外,由调用该方法的环境去处理。
throw是语句抛出异常,一般是在代码块内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常
public static void main(String[] args) {
String s = "abc";
if(s.equals("abc")) {
throw new NumberFormatException();
//抛出的异常类型也可以是自定义的
} else {
System.out.println(s);
}
//function();
}
throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
public void function() throws Exception{……}
public class testThrows(){
public static void function() throws NumberFormatException{
//抛出的异常也可以是自定义的异常。
String s = "abc";
System.out.println(Double.parseDouble(s));
}
public static void main(String[] args) {
try {
function();
//当某个方法可能会抛出某种异常时用于throws
// 声明可能抛出的异常,然后交给上层调用它的方法程序处理
} catch (NumberFormatException e) {
System.err.println("非数据类型不能强制类型转换。");
//e.printStackTrace();
}
}